如果字符串相等 - 如果声明

时间:2015-12-10 13:17:12

标签: c++

我正在从命令行解析参数

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-statement中的这一行没有打印出来?

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

1 个答案:

答案 0 :(得分:5)

因为argv是指向char的指针数组,所以你不能只将指向char和字符串文字的指针进行比较。要解决您的问题,您可以将两者转换为std::string,如下所示:

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

否则,您可以使用strcmp来比较 C字符串,如图in the docs所示。