我正在尝试通过main传递参数,这工作正常,然后检查传入的参数是否包含正确的格式/值。但是,即使我传递了正确的格式,它仍然表明存在错误,这里是代码:
int main(int argc, char* argv[]) {
/* Check if arguments are being passed through */
if(argc == 1){
cout << endl << "--- ERROR ---" << endl;
exit(0);
}
/* Check if the first argument contains the correct data */
string file_name = argv[1];
/* Handle operation */
string operation = argv[2];
if(operation != "-t" || operation != "-r")
{
cout << "Something is not right";
}
}
如果我执行:cout << operation;
,那么当我运行应用程序时,结果将是:-t
。
有人可以建议我哪里出错吗?
更新:
我将传递这些论点:
./main something.wav -t
我期待if语句:
if(operation != "-t" || operation != "-r")
{
cout << "Something is not right";
}
要返回负数,因为我输入的值是-t
答案 0 :(得分:5)
if(operation != "-t" || operation != "-r")
{
cout << "Something is not right";
}
无论操作是什么,它必须不等于“-t”或不等于“-r”,所以这将总是打印“有些东西不对”。
我期待if语句:
要返回负数,因为我输入的值是-t
OR的后半部分是真的。如果前半部分或后半部分为真,则OR为真。你想要((operation != "-t") && (operation != "-r"))
。这样,if
只会在输入不是-t 和时触发,而且它也不是-r。