嗨,任何人都可以告诉这个代码有什么问题吗?
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*)’|
嗨,任何人都可以告诉这个代码有什么问题吗?
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*)’|
strcmp
接受const char*
作为参数。您可以使用c_str
方法:
if(!strcmp(s.c_str(),"STRING"))
或者只是使用重载operator==
for std::string
:
if(s == "STRING")
您需要使用s.c_str()
以下方式获取 a 的 C 字符串版本std::string
:
if (!strcmp (s.c_str(), "STRING")) ...
但我不确定你为什么不直接使用:
if (s == "STRING") ...
这更具可读性。
您可以在其他答案中使用该c_str()
方法。std::string
你也可以这样做:
if (s == "STRING") { ... }
哪个更清楚,并且不会假装您正在编写 C。
如果要保持 C 比较字符串的方式,则必须使用它的c_str()
成员函数std::string
为您提供底层数组。char
否则,您应该使用operator==
which 可以测试字符串和const char*
.
您必须使用 c_str() 它应该可以解决您的问题。