无法将'std :: string'转换为'const char *

时间:2013-05-29 09:40:47

标签: c++

你可以告诉任何人这个代码有什么问题吗?。

 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*)’|

5 个答案:

答案 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(),它应该可以解决你的问题。