0

我决定重新开始编程(特别是 C++),为此我开始研究命令行解析器。最终的目标是把它变成一个简单的类,我可以在未来的一些项目中导入它。

这个测试程序应该简单地列出它接收到的参数的数量,然后将它们打印出来,每行一个,然后退出。

这是我的代码:

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char* argv[]){
    cout << "Es gibt " << argc << " Argumente." << endl;
    for(int i=0; i << argc; i++){
        cout << "Argument " << i << ": " << argv[i] << endl;
    }
    return 0;
}

以下是终端中发生的情况:

[user@dx4320 cmdline-parser]$ g++ cmdline-parser-test.cpp -o parsetest
[user@dx4320 cmdline-parser]$ ./parsetest eins zwei
Es gibt 3 Argumente.
[user@dx4320 cmdline-parser]$ 

为什么它不按预期打印参数?它清楚地认识到了这些论点,那么问题是什么?我确定我在这里遗漏了一些明显的东西。

4

1 回答 1

7

你有错误的运营商,你需要:

for(int i=0; i < argc; i++){
   // only one ^ is correct here

否则,您将拥有运算符<<(又名“左移”),因此,表达式i << argci最初是在哪里0)的计算结果始终为false,并且永远不会执行循环的主体。

于 2013-09-26T17:39:56.637 回答