这段代码有什么问题?
string s = getString(); // Return string if(!strcmp(s, "STRING")) { // Do something }
字符串在编译时,我得到这样的错误:错误:无法将参数“1”的“std::string”转换为“const char*”,转换为“int strcmp(const char*,const char*)”|
vxbzzdmp1#
strcmp接受const char*作为参数。您可以使用c_str方法:
strcmp
const char*
c_str
if(!strcmp(s.c_str(),"STRING"))
字符串或者只对std::string使用重载的operator==:
std::string
operator==
if(s == "STRING")
型
iklwldmw2#
您需要使用s.c_str()来获取std::string的C字符串版本,沿着行:
s.c_str()
if (!strcmp (s.c_str(), "STRING")) ...
字符串但我不知道你为什么不直接用用途:
if (s == "STRING") ...
型这样可读性更强
uinbv5nw3#
您可以像其他答案中那样在std::string上使用c_str()方法。你也可以这样做:
c_str()
if (s == "STRING") { ... }
字符串这样更清楚,也不会假装你在写C
wbgh16ku4#
你必须使用c_str(),它应该可以解决你的问题。
lymnna715#
如果想保持C比较字符串的方式,必须使用std::string的c_str()成员函数,该函数提供基础char数组。否则,您应该使用operator==,它可以测试字符串和const char*之间的相等性。
char
5条答案
按热度按时间vxbzzdmp1#
strcmp
接受const char*
作为参数。您可以使用c_str
方法:字符串
或者只对
std::string
使用重载的operator==
:型
iklwldmw2#
您需要使用
s.c_str()
来获取std::string
的C字符串版本,沿着行:字符串
但我不知道你为什么不直接用用途:
型
这样可读性更强
uinbv5nw3#
您可以像其他答案中那样在
std::string
上使用c_str()
方法。你也可以这样做:
字符串
这样更清楚,也不会假装你在写C
wbgh16ku4#
你必须使用c_str(),它应该可以解决你的问题。
lymnna715#
如果想保持C比较字符串的方式,必须使用
std::string
的c_str()
成员函数,该函数提供基础char
数组。否则,您应该使用
operator==
,它可以测试字符串和const char*
之间的相等性。