std::string 到char* 转换方法
时间: 2023-09-10 16:05:36 浏览: 130
将std::string转换为char*的方法可以使用char* c_str()函数。例如,如果有一个std::string对象str,可以使用下面的代码将其转换为char*:
```
const char* cstr = str.c_str();
```
请注意,返回的指针指向的是字符串存储在std::string对象中的内部缓冲区,因此在字符串被修改或销毁之前,需要谨慎使用该指针。
相关问题
c++将std::string转换成char*
可以通过`std::string`的`c_str()`函数来获取一个指向`char`类型的指针,示例如下:
```c++
std::string str = "Hello, World!";
const char* charPtr = str.c_str();
```
需要注意的是,由于`c_str()`返回的指针指向的是`std::string`内部的字符数组,因此需要保证`std::string`对象的生命周期与使用该指针的代码段重叠,否则可能会导致指针指向无效的内存区域。
std::stringstream 转char *
可以使用 `std::stringstream` 对象的 `str()` 方法获取其内部的字符串,然后使用 `c_str()` 方法将其转换为 `const char*` 类型的指针,最终可以再将其转换为 `char*` 类型的指针,例如:
```cpp
#include <iostream>
#include <sstream>
int main() {
std::stringstream ss;
ss << "Hello, world!";
std::string str = ss.str();
char* cstr = new char[str.length() + 1];
std::strcpy(cstr, str.c_str());
std::cout << cstr << std::endl;
delete[] cstr;
return 0;
}
```
在上面的示例代码中,首先使用 `std::stringstream` 对象 `ss` 向其中写入了一个字符串 "Hello, world!",然后通过 `str()` 方法获取其内部存储的字符串并赋值给 `std::string` 对象 `str`。接着,使用 `new` 运算符在堆上分配了一块内存,其大小为 `str.length() + 1`,并将指向该内存的指针赋值给 `char*` 类型的指针 `cstr`。最后,使用 `std::strcpy()` 函数将 `str.c_str()` 返回的 `const char*` 类型的指针指向的字符串复制到 `cstr` 指向的内存中,并使用 `std::cout` 输出 `cstr` 指向的字符串。最后,使用 `delete[]` 运算符释放了 `cstr` 指向的内存。
阅读全文
相关推荐

















