你可以告诉任何人这个代码有什么问题吗?。
string s=getString(); //return string
if(!strcmp(s,"STRING")){
//Do something
}
编译时我收到的错误如
error: cannot convert ‘std::string’ to ‘const char*’ for argument ‘1’ to ‘int strcmp(const char*, const char*)’|
答案 0 :(得分:20)
strcmp
接受const char*
作为参数。您可以使用c_str
方法:
if(!strcmp(s.c_str(),"STRING"))
或者只为operator==
使用重载的std::string
:
if(s == "STRING")
答案 1 :(得分:11)
您需要使用s.c_str()
来获取std::string
的C字符串版本,如下所示:
if (!strcmp (s.c_str(), "STRING")) ...
但我不确定为什么你不会只使用:
if (s == "STRING") ...
更具可读性。
答案 2 :(得分:5)
您可以像c_str()
一样使用std::string
方法,与其他答案一样。
你也可以这样做:
if (s == "STRING") { ... }
哪个更清楚,并且不假装你正在写C。
答案 3 :(得分:1)
如果你想保留比较字符串的C方式,你必须使用std::string
char
成员函数来提供基础operator==
数组。
否则,您应该使用const char*
来测试字符串与{{1}}之间的相等性。
答案 4 :(得分:1)
你必须使用c_str(),它应该可以解决你的问题。