我正在开发一个控制台项目,但我无法让这部分工作。
void execute(char* argv[]) {
char* printex = "print";
if (argv[1] == printex) {
print(argv);
}
else {
cout << "Unknown function." << endl;
}
}
每次我输入&#34;打印&#34;对于argv[1]
,它认为我输入了其他内容。我试过放入
cout << argv[1];
输出打印。为什么它不起作用?
答案 0 :(得分:1)
argv[1]
是char*
,printex
也是std::string
。比较它们将比较它们包含的地址,而不是实际的字符串。所以他们永远不会是一样的。您可以使用strcmp
(更安全),或以当前形式使用if( strcmp( argv[1], printex) == 0 )
//mathced
进行比较。
{{1}}
答案 1 :(得分:1)
尝试将if (argv[1] == printex)
替换为if (strcmp(argv[1], printex)==0)
来比较字符串(不是字符串上的指针)。