怎么将string赋值给字符指针
时间: 2024-10-11 07:15:39 浏览: 22
QString和char以及string之间的赋值详解
5星 · 资源好评率100%
在C++中,你可以使用`strcpy`、`std::copy`函数或者直接初始化来将`std::string`的内容赋值给字符指针。以下是几种常见方法:
1. 使用`strcpy`(C风格字符串复制函数):
```cpp
std::string myString = "Hello";
char* charPointer = new char[myString.length() + 1]; // 预留空间终止符'\0'
strcpy(charPointer, myString.c_str()); // 注意myString.c_str()返回的是const char*
charPointer[myString.length()] = '\0'; // 添加终止符
```
记得在使用完后释放动态分配的内存,如`delete[] charPointer;`
2. 使用`std::copy`(C++11及以上版本):
```cpp
std::string myString = "Hello";
char charPointer[myString.size() + 1];
std::copy(myString.begin(), myString.end(), charPointer); // 不包括结束符
charPointer[myString.size()] = '\0';
```
这种方法更安全,因为它不会溢出。
3. 直接初始化字符数组(假设已知字符串长度):
```cpp
std::string myString = "Hello";
char charPointer[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
// 注意这里假设数组足够大,否则可能会导致未初始化的字符数据
```
这三种方法都会把`std::string`的内容复制到字符指针指向的位置,并在末尾添加终止符`\0`。
阅读全文