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

Cannot convert ‘std::string’ to ‘const char*

本文关键字:const 转换 char std string      更新时间:2023-10-16

谁知道这段代码有什么问题吗?

 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"))

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

if(s == "STRING")

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

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

但是我不确定你为什么不直接使用:

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

更容易读

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

你也可以这样做:

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

更清晰,不会假装你在写c。

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

你必须使用std::stringc_str()成员函数,它给你底层的char数组,如果你想保持C的比较字符串的方式

否则,您应该使用operator==,它可以测试字符串与const char*之间的相等性。