-2

我试图通过 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当我运行应用程序时通过 -t。

谁能建议我哪里出错了?

更新:

我将传递这些论点:

./main something.wav -t

我期待if语句:

if(operation != "-t" || operation != "-r")
{
    cout << "Something is not right";
}

返回负数,因为我输入的值是 -t

4

1 回答 1

5
if(operation != "-t" || operation != "-r")
{
    cout << "Something is not right";
}

无论操作是什么,它必须要么不等于“-t”,要么不等于“-r”,所以这总是会打印“Something is not right”。

我期待 if 语句:
返回负数,因为我输入的值是 -t

OR 的后半部分为真。如果前半部分或后半部分为真,则 OR 为真。你想要((operation != "-t") && (operation != "-r"))。这样,只有当输入不是 -t并且也不是 -rif时才会触发。

于 2013-03-18T13:24:59.167 回答