2013-09-26 62 views
0

我已决定重新编程(特别是C++),为此我开始使用命令行解析器。最终目标是把它变成一个简单的类,我可以在未来的某些项目中导入它。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; 
} 

这里是在终端发生了什么:

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

为什么它不打印的参数,因为它是咋办?它清楚地承认了这些论点,那么问题是什么?我相信我在这里错过了一些明显的东西。

+6

将'i << argc'改为'i

回答

7

你有错误的操作,你需要:

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

否则你不得不运营商<<(又名“左移位”),因此,表达i << argc(其中i最初0)总是评估为false,循环的主体永远不会执行。

+0

谢谢。您的解决方案完美运作自从我使用C++以来已经有一段时间了。我已经在java中做了更多的近期编程。 – KG6ZVP

+0

错误,在Java中的错误基本不会相同吗? –

+0

@ KG6ZVP如果他的解决方案完美工作,为什么不把它指定为“解决方案”?这样我们都知道它已经解决了:) – rabensky