2015-12-10 106 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