通过main传递参数 - 检查是否有效输入

时间:2013-03-18 13:22:27

标签: c++ g++ command-line-arguments argument-passing

我正在尝试通过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

1 个答案:

答案 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。