2015-12-10 139 views
-5

我的命令行參數解析如果字符串相等 - if語句

代碼

for(int i = 1; i < argc; i++){ 
    cout << i << " " << argv[i] << "\n"; 
    if(argv[i] == "-width"){ 
     cout << " width = " << argv[i] << "\n"; 
    } 
} 

命令

./txtbin test.jpg -width 100 out.jpg 

結果

1 test.jpg 
2 -width 
3 100 
4 out.jpg 

這是爲什麼if語句內部的行未打印?

cout << " width = " << argv[i] << "\n"; 

回答

5

因爲argv是指向字符數組,你不能只比較字符指針和一個字符串。爲了解決你的問題,你既可以轉換爲std::string這樣的:

if(std::string(argv[i]) == "-width") 

否則,您可以使用strcmp如圖所示in the docs比較C字符串

+1

第二個'std :: string'是多餘的,轉換爲一個字符串似乎有點沉重,因爲'strcmp'存在工作在c風格的字符串 – NathanOliver

+0

@NathanOliver,當我看到您的評論時,我只是將其添加到我的答案(我正在忙於尋找一個鏈接,所以最初沒有包含它)。 – ForceBru