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

Har*_*ris 6 c++

嗨,任何人都可以告诉这段代码有什么问题吗?

 string s=getString(); //return string

    if(!strcmp(s,"STRING")){
         //Do something
    }
Run Code Online (Sandbox Code Playgroud)

编译时我得到的错误就像

error: cannot convert ‘std::string’ to ‘const char*’ for argument ‘1’ to ‘int strcmp(const char*, const char*)’|
Run Code Online (Sandbox Code Playgroud)

awe*_*oon 21

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

if(!strcmp(s.c_str(),"STRING"))
Run Code Online (Sandbox Code Playgroud)

或者只是使用过载operator==std::string:

if(s == "STRING")
Run Code Online (Sandbox Code Playgroud)


pax*_*blo 11

您需要使用s.c_str()以获取a的C字符串版本std::string,如下所示:

if (!strcmp (s.c_str(), "STRING")) ...
Run Code Online (Sandbox Code Playgroud)

但我不确定为什么你不会只使用:

if (s == "STRING") ...
Run Code Online (Sandbox Code Playgroud)

这更具可读性.


jan*_*anm 5

您可以像在其他答案中一样使用该c_str()方法std::string.

你也可以这样做:

if (s == "STRING") { ... }
Run Code Online (Sandbox Code Playgroud)

哪个更清楚,也不假装你在写C.