string和char*的相互转换
时间: 2024-10-20 20:10:42 浏览: 14
string和char*
4星 · 用户满意度95%
`string` 和 `char*` 在 C++ 中代表了不同的数据类型:
- `std::string` 是 C++ 标准库中的内置类型,用于存储字符串。它是一个字符序列,并自动管理内存,不需要手动分配或释放。
- `char*` 是一个指向字符数组的指针,通常表示一串连续的字符。用户需要负责动态内存分配和释放,如果忘记释放,可能导致内存泄漏。
两者之间的转换通常通过构造函数、成员函数或者函数如 `std::string::c_str()` 来完成:
1. `std::string -> char*`: 使用 `c_str()` 函数获取 `std::string` 的 C 风格字符串指针,此时内容不可变。
```cpp
std::string str = "Hello";
char* cStr = str.c_str();
```
2. `char* -> std::string`: 可以通过 `std::string::assign()` 或者 `std::string(const char*)` 构造函数将 `char*` 转换为 `std::string`,但需要注意原始字符串是否结尾于空字符 `\0`,以及是否有额外的内存操作。
```cpp
char* cStr = "Hello";
std::string str(cStr);
```
阅读全文