c++string 赋值 给char*
时间: 2025-04-25 22:04:14 浏览: 28
### C++ 中 `std::string` 转换为 `char*`
在 C++ 编程中,要将 `std::string` 类型转换成 `char*` 类型,可以使用成员函数 `c_str()` 或者 `data()`. 这两个方法返回的是一个指向字符串内部缓冲区的指针。需要注意的是,`c_str()` 返回的是以 null 结尾的字符数组,而 `data()` 在某些旧版本的标准库实现中可能不保证这一点。
当需要修改目标 `char*` 的内容时,则应分配足够的内存空间来存储副本,并通过复制操作完成赋值过程:
```cpp
#include <iostream>
#include <cstring> // For strcpy
void exampleFunction(const char* input) {
std::cout << "Received string: " << input << '\n';
}
int main(){
std::string cppString = "Hello, world!";
const char *readOnlyCharPtr = cppString.c_str();
exampleFunction(readOnlyCharPtr);
char writableBuffer[100];
strncpy(writableBuffer, cppString.c_str(), sizeof(writableBuffer)-1);
writableBuffer[sizeof(writableBuffer)-1]='\0';// Ensure null termination
exampleFunction(writableBuffer);
return 0;
}
```
对于动态分配的情况:
```cpp
#include <memory>
int main(){
std::string cppString = "Another test message.";
auto managedBuffer = std::make_unique<char[]>(cppString.size()+1);
memcpy(managedBuffer.get(), cppString.data(), cppString.size());
managedBuffer[cppString.size()]='\0';
// Use the buffer...
printf("%s\n",managedBuffer.get());
// No need to manually delete as unique_ptr handles it.
return 0;
}
```
阅读全文
相关推荐


















