c++ 无法将“std::string”转换为“const char*

e5njpo68  于 11个月前  发布在  其他
关注(0)|答案(5)|浏览(111)

这段代码有什么问题?

string s = getString(); // Return string

if(!strcmp(s, "STRING")) {
    // Do something
}

字符串
在编译时,我得到这样的错误:
错误:无法将参数“1”的“std::string”转换为“const char*”,转换为“int strcmp(const char*,const char*)”|

vxbzzdmp

vxbzzdmp1#

strcmp接受const char*作为参数。您可以使用c_str方法:

if(!strcmp(s.c_str(),"STRING"))

字符串
或者只对std::string使用重载的operator==

if(s == "STRING")

iklwldmw

iklwldmw2#

您需要使用s.c_str()来获取std::string的C字符串版本,沿着行:

if (!strcmp (s.c_str(), "STRING")) ...

字符串
但我不知道你为什么不直接用用途:

if (s == "STRING") ...


这样可读性更强

uinbv5nw

uinbv5nw3#

您可以像其他答案中那样在std::string上使用c_str()方法。
你也可以这样做:

if (s == "STRING") { ... }

字符串
这样更清楚,也不会假装你在写C

wbgh16ku

wbgh16ku4#

你必须使用c_str(),它应该可以解决你的问题。

lymnna71

lymnna715#

如果想保持C比较字符串的方式,必须使用std::stringc_str()成员函数,该函数提供基础char数组。
否则,您应该使用operator==,它可以测试字符串和const char*之间的相等性。

相关问题