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 09:10:50 浏览: 182
这个错误是因为 strcasecmp 函数接受的是 C 风格的 char* 类型的参数,而你传递了一个 C++ 风格的 std::string 类型的参数。解决这个问题的方法是将 std::string 类型的参数转换为 const char* 类型的参数。你可以使用 c_str() 函数来实现这个转换,例如:
```
if(strcasecmp(pCharText, msg.c_str()) == 0)
```
这样就可以将 msg 转换为 const char* 类型的参数了。
相关问题
Main.cc:40:18: error: stray ‘\342’ in program result = “Yes”; ^ Main.cc:40:19: error: stray ‘\200’ in program result = “Yes”; ^ Main.cc:40:20: error: stray ‘\234’ in program result = “Yes”; ^ Main.cc:40:24: error: stray ‘\342’ in program result = “Yes”; ^ Main.cc:40:25: error: stray ‘\200’ in program result = “Yes”; ^ Main.cc:40:26: error: stray ‘\235’ in program result = “Yes”; ^ Main.cc:42:18: error: stray ‘\342’ in program result = “No”; ^ Main.cc:42:19: error: stray ‘\200’ in program result = “No”; ^ Main.cc:42:20: error: stray ‘\234’ in program result = “No”; ^ Main.cc:42:23: error: stray ‘\342’ in program result = “No”; ^ Main.cc:42:24: error: stray ‘\200’ in program result = “No”; ^ Main.cc:42:25: error: stray ‘\235’ in program result = “No”; ^ Main.cc: In function ‘std::__cxx11::string solution(std::__cxx11::string, std::__cxx11::string)’: Main.cc:40:21: error: ‘Yes’ was not declared in this scope result = “Yes”; ^~~ Main.cc:42:21: error: ‘No’ was not declared in this scope result = “No”; ^~
这个错误提示可能是因为你的代码中包含了一些非法字符。你可以尝试重新编写代码,并确保没有使用任何不必要的特殊字符或空格。此外,在 C++ 中,字符串必须使用双引号(")而不是单引号(')来表示。下面是一个示例代码,展示如何正确地声明和初始化字符串变量:
```
#include <iostream>
#include <string>
using namespace std;
int main() {
string result = "Yes";
cout << result << endl;
result = "No";
cout << result << endl;
return 0;
}
```
这个程序将输出:
```
Yes
No
```
libhermes.so:对‘std::filesystem::__cxx11::directory_iterator::operator*() const’未定义的引用 libhermes.so:对‘std::filesystem::__cxx11::path::_M_find_extension() const’未定义的引用 libhermes.so:对‘std::filesystem::__cxx11::path::compare(std::filesystem::__cxx11::path const&) const’未定义的引用 libhermes.so:对‘std::filesystem::__cxx11::path::_M_split_cmpts()’未定义的引用 libhermes.so:对‘std::filesystem::__cxx11::directory_iterator::operator++()’未定义的引用
这些错误表示链接的库 libhermes.so 中对 std::filesystem 的一些函数未定义引用。这可能是由于以下几种情况导致的:
1. 编译时没有包含正确的标准库:请确保你在编译时指定了正确的标准库,例如 -lstdc++fs。
2. 编译器不支持 C++17 标准或者没有启用 C++17 标准:std::filesystem 是 C++17 引入的标准库,所以你需要使用支持 C++17 标准的编译器,并且在编译选项中启用 C++17 标准(例如使用 -std=c++17)。
3. 编译器版本过旧:如果你使用的是较旧的编译器,可能不支持 std::filesystem。在这种情况下,你可以尝试升级编译器版本或者使用其他替代方案来处理文件系统操作,例如 Boost 文件系统库。
请检查以上几点,如果问题仍然存在,请提供更多关于你编译环境和代码的信息,以便我能够更具体地帮助你解决问题。
阅读全文