2013-09-26 60 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