C++;带有OR运算符的if语句未按预期工作 最近我学习C++,我已经开始了一个小项目,这样我就不会在放学后感到无聊了。
我正在创建一个程序,它接受命令参数,如果格式不正确,就会抛出一条“用法”消息 这是我的密码:C++;带有OR运算符的if语句未按预期工作 最近我学习C++,我已经开始了一个小项目,这样我就不会在放学后感到无聊了。,c++,if-statement,string-comparison,C++,If Statement,String Comparison,我正在创建一个程序,它接受命令参数,如果格式不正确,就会抛出一条“用法”消息 这是我的密码: #include <iostream> using namespace std; int main(int argc, char *argv[]){ if ( argc != 3 ) { cout << "USAGE: " << argv[0] << " <-f/-c> <integer value>
#include <iostream>
using namespace std;
int main(int argc, char *argv[]){
if ( argc != 3 )
{
cout << "USAGE: " << argv[0] << " <-f/-c> <integer value>" << endl;
return 1;
}
else
{
if ( argv[1] == "-f" || argv[1] == "-F" )
{
}
else if ( argv[1] == "-c" || argv[1] == "-C" )
{
}
else
{
cout << "USAGE: " << argv[0] << " <-f/-c> <integer value>" << endl;
return 1;
}
}
return 0;
}
#包括
使用名称空间std;
int main(int argc,char*argv[]){
如果(argc!=3)
{
cout字符串与strcmp比较,而不是与=
比较:
if ( !strcmp( argv[1], "-c" ) ) ...
这不是比较char*
s的方法。使用strcmp或创建一个新的std::string
如下:
std::string argument(argv[1]);
if ( argument == "-f" || argument == "-F" )
{
//some code here
}
else if ( argument == "-c" || argument == "-C" )
{
//some code here
}
您必须使用
strcmp
来比较string.h
库中的c样式字符串
如果字符串s1
和s2
相等,则函数strcmp(s1,s2)
返回0
,1
如果s1
和s2
不按字母顺序,如果s1
和s2
按字母顺序
代码如下:
#include <iostream>
#include <string.h>
using namespace std;
int main(int argc, char *argv[])
{
if ( argc != 3 )
{
cout << "USAGE: " << argv[0] << " <-f/-c> <integer value>" << endl;
return 1;
}
else
{
if ( strcmp(argv[1], "-f") == 0 || strcmp(argv[1], "-F") == 0 )
{
}
else if ( strcmp(argv[1], "-c") == 0 || strcmp(argv[1], "-C") == 0 )
{
}
else
{
cout << "USAGE: " << argv[0] << " <-f/-c> <integer value>" << endl;
return 1;
}
}
return 0;
}
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[])
{
如果(argc!=3)
{
CUT您试图将C风格字符串与==/Cuth>运算符进行比较。这在C++中是不适用的。
相反,您需要使用比较两个任意序列的函数strcmp
或equal
也可以把C字符串转换成<代码> STD::String ,然后比较它们。
你到底是怎么打出的????你能把那个信息添加到这个问题吗??我想知道为什么所有的下注……这是一个非常基本的问题,但是它是完全清楚的,任何不是C++新手的人都应该能够立即回答它。但是它是不是一个容易研究的东西(除了学习语言,这是OP已经做的),甚至是意识到错误,当你是C++新手时,我把你的答案标记为正确的。谢谢你解释它。我想<代码> STRCMP(1, 2)是一个<代码> C++ <代码>,但C++中还有C字符串,但是你最好总是使用<代码> STD::String 。评论是因为这是一个接受的答案并且有几个投票:虽然这是一个可能的解决方案,但是实际上不需要使用<代码> STRCMP < /C> >,它不是好的C++。,然后使用普通的C++字符串处理会更好。@海德,你是完全正确的,先生。请同时建议我现在该怎么办?你不必做任何事情,因为已经覆盖了<代码> STD::String < /Cord>备选。