我正在从命令行解析参数
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";
答案 0 :(得分:5)
因为argv
是指向char的指针数组,所以你不能只将指向char和字符串文字的指针进行比较。要解决您的问题,您可以将两者转换为std::string
,如下所示:
if(std::string(argv[i]) == "-width")
否则,您可以使用strcmp
来比较 C字符串,如图in the docs所示。