如何在C++中将std::string转换为char*?c_str()和data()的问题
大家好!我刚开始学习C++,遇到了一个问题。我需要将std::string的内容传递给一个只接受char*(而不是const char*)的函数。我知道std::string有c_str()和data()方法,但它们返回const char*,编译器报错说不能将const传递给非const参数。我尝试了这样做:
```cpp
std::string myStr = "Hello, world!";
char* ptr = myStr.c_str(); // 错误:无法将const char*转换为char*
someFunction(ptr);
```
然后我读到可以使用const_cast,但这看起来不安全。我还看到有人通过strcpy将字符串复制到char数组中。哪种方法是正确的?或者有没有标准的方法从std::string获取char*(非const)?提前感谢帮助!
<<>>
正确方法:复制到单独的缓冲区
问题在于std::string管理自己的内部内存,并且不保证你可以修改其内容。