strcmp(strOld,NEWDESC),使用时会报错strcmp:cannot convert paramter 1 from class CString to const char* 怎么改
时间: 2024-09-30 14:03:40 浏览: 28
`strcmp`函数通常用于比较两个C风格字符串,它需要两个`const char *`类型的指针作为参数。但是,你在使用`strcmp(strOld, NEWDESC)`时遇到了错误,因为`NEWDESC`可能是`CString`类型,而不是`const char *`。
要解决这个问题,你需要将`NEWDESC`转换为`const char *`形式。如果你的`CString`类有一个成员函数可以将其转换为C风格字符串,例如`CString::GetBuffer()`或`CString::GetString()`, 可以尝试这样做:
```cpp
// 假设CString有一个GetBuffer方法返回const char*的引用
const char* descChars = strOld.GetBuffer();
int result = strcmp(descChars, NEWDESC.GetString());
// 或者直接使用CString的C_str()方法,如果有的话
result = strcmp(strOld.C_str(), NEWDESC);
```
这样应该可以避免类型转换错误。记得处理好转换后的缓冲区或者临时字符串的生命周期,避免内存泄漏。
相关问题
[Error] cannot convert 'buy' to 'const char*' for argument '2' to 'int strcmp(const char*, const char*)'
这个错误是因为你在调用strcmp函数时,第二个参数需要传入一个const char*类型的字符串,但是你传入的是一个变量名buy,这个变量的类型可能不是const char*。你需要将buy转换为const char*类型,可以使用以下两种方法:
1. 使用字符串字面值来代替buy变量,例如:strcmp("buy", "sell");
2. 将buy变量转换为const char*类型,例如:strcmp(buy.c_str(), "sell");
其中第二种方法需要确保buy变量是一个字符串类型,例如std::string。
[error] cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*' for argument '1' to 'int strcmp(const char*, const char*)'
这个错误是因为在使用strcmp函数时,传入的参数类型不正确。strcmp函数需要传入两个const char*类型的参数,而你传入了一个std::string类型的参数,导致编译器无法将其转换为const char*类型。解决方法是将std::string类型的参数转换为const char*类型,可以使用c_str()函数来实现。例如:
std::string str = "hello";
const char* cstr = str.c_str();
int result = strcmp(cstr, "world");
这样就可以避免这个错误了。
阅读全文