std::string 到char* 转换方法
时间: 2023-09-10 07:05:36 浏览: 51
将std::string转换为char*的方法可以使用char* c_str()函数。例如,如果有一个std::string对象str,可以使用下面的代码将其转换为char*:
```
const char* cstr = str.c_str();
```
请注意,返回的指针指向的是字符串存储在std::string对象中的内部缓冲区,因此在字符串被修改或销毁之前,需要谨慎使用该指针。
相关问题
std::string怎么转为char*
可以通过以下两种方式将std::string转换为char*:
1. 使用c_str()函数
可以使用std::string的c_str()函数将字符串转换为指向char类型的指针,示例代码如下:
```
std::string str = "Hello, world!";
char* char_array = &str[0];
```
这样就可以把std::string对象转换为指向char类型的指针char_array。
需要注意的是,由于c_str()函数返回的指针指向的是std::string对象内部的字符数组,因此在使用该指针时,需要保证std::string对象的生命周期大于等于使用该指针的生命周期,否则会导致未定义行为。
2. 使用strcpy()函数
另一种方式是使用strcpy()函数,该函数可以将一个字符串复制到另一个字符数组中,示例代码如下:
```
std::string str = "Hello, world!";
char char_array[str.size() + 1];
strcpy(char_array, str.c_str());
```
这样就可以把std::string对象转换为字符数组char_array。
需要注意的是,由于字符数组char_array的大小要比std::string对象的长度大1,因为strcpy()函数会在字符数组的末尾添加一个null字符('\0')。
std::string 如何转为const char *
可以使用std::string的c_str()成员函数将std::string转换为const char *类型。例如:
```c++
#include <iostream>
#include <string>
int main()
{
std::string s = "hello world";
const char *c_str = s.c_str(); // 将string类型转换为const char *类型
std::cout << c_str << std::endl;
return 0;
}
```
输出:
```
hello world
```
需要注意的是,c_str()函数返回的const char *指针指向的是std::string对象内部的字符数组,因此当std::string对象被销毁时,指针指向的字符数组也会被销毁。在使用c_str()函数返回的指针时,需要确保std::string对象的生命周期足够长,否则可能会出现未定义的行为。