Main.cc: In function ‘std::__cxx11::string solution(std::__cxx11::string, std::__cxx11::string)’: Main.cc:42:33: error: cannot convert ‘std::__cxx11::string {aka std::__cxx11::basic_string}’ to ‘const char*’ for argument ‘2’ to ‘int strcasecmp(const char*, const char*)’ if(strcasecmp(pCharText, msg) == 0) ^
时间: 2023-08-02 17:10:50 浏览: 72
这个错误是因为 strcasecmp 函数接受的是 C 风格的 char* 类型的参数,而你传递了一个 C++ 风格的 std::string 类型的参数。解决这个问题的方法是将 std::string 类型的参数转换为 const char* 类型的参数。你可以使用 c_str() 函数来实现这个转换,例如:
```
if(strcasecmp(pCharText, msg.c_str()) == 0)
```
这样就可以将 msg 转换为 const char* 类型的参数了。
相关问题
std::string和std::_c++11::string
在C++03中,基础字符串的定义是:std::basic_string<char>。而在C++11中,基础字符串变成了:std::__cxx11::basic_string<char>(libstdc++)或者std::__1::basic_string<char>(libc++)。这是因为C++11引入了一些新的特性,例如右值引用和移动语义,这些特性需要对标准库进行修改。因此,在C++11中,为了避免与旧版本的代码发生冲突,标准库的名称被修改了。如果你使用的是旧版本的编译器,那么你只能使用std::basic_string<char>。如果你使用的是新版本的编译器,那么你可以使用std::__cxx11::basic_string<char>(libstdc++)或者std::__1::basic_string<char>(libc++)。
std::__cxx11::basic_string
std::__cxx11::basic_string是C++标准库中的一个字符串类,它是基于模板的,可以用于存储任何类型的字符。它提供了许多字符串操作函数,如查找、替换、插入、删除等。在C++11中,std::__cxx11::basic_string被引入为std::string的别名,因此我们通常使用std::string来表示字符串。