error: non-const lvalue reference to type 'std::string' (aka 'basic_string<char>') cannot bind to a value of unrelated type 'char *'
时间: 2024-10-27 12:14:28 浏览: 51
non-const lvalue reference cannot bind to rvalue(解决方案).md
这个错误信息表明你在C++中尝试将一个非常量引用(lvalue reference,即可以修改其绑定的变量)绑定到一个不属于同一类型的值上,这里是一个字符串类型`std::string`试图绑定到一个字符指针`char *`。在C++中,你不能直接把一个字符串引用赋给一个字符指针,因为它们不是兼容的数据类型。
例如,下面的代码会引发此类错误:
```cpp
std::string str = "Hello";
char* ptr = &str; // 错误,不能这样做
```
正确的做法应该是转换类型,如使用`std::strcpy`函数复制字符串内容到字符数组,或者如果需要指向字符串的内容,应该使用`std::string`的成员函数获取`const char *`:
```cpp
std::string str = "Hello";
char* ptr = new char[strlen(str) + 1]; // 或者更安全地使用 strncpy
std::copy(str.begin(), str.end(), ptr);
// 使用完后别忘了删除动态分配的内存
delete[] ptr;
```
阅读全文