无法将' std::string '转换为' const char* '
Cannot convert ‘std::string’ to ‘const char*
谁知道这段代码有什么问题吗?
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::string
的c_str()
成员函数,它给你底层的char
数组,如果你想保持C的比较字符串的方式
否则,您应该使用operator==
,它可以测试字符串与const char*
之间的相等性。
相关文章:
- 将 const 转换为 const char* 无效,我该如何解决?使用 gcc7 时失败
- "class<T>"到"class<const T>"转换运算符的惯用方法
- 编译器可以静默地从 const 转换为 const 和,反之亦然吗?
- 从 Object<const T> 转换为 Object<t>
- 为什么在设置类成员时会自动从 const 转换为 non-const 并发生?
- 同时向下投递并从 const 转换为非 const
- 没有匹配的操作数[template]/无法从Type const*转换为Type
- static const转换为c++共享库中的对象.是进程间共享的吗?
- 无法从 *const 转换为 &in += 运算符
- C2664 无法在 Qt C++ 中将参数 1 从用户 *const 转换为用户
- const转换操作符
- std::pair中的Const转换
- const转换为非const或非const转换为const
- C++11:无法将参数从'T *const'转换为'T *&&'
- Const转换std容器
- 复制构造函数将const转换为非const
- 在c++中将非const转换为const
- 无法将参数 1 从 'PrintVisitor *const ' 转换为 'Visirot &'
- 将const T* const转换为T*
- 操作符情况下的c++ const转换