string 转char*
时间: 2023-07-29 22:14:37 浏览: 70
可以通过以下方式将 string 转换为 char*:
```cpp
#include <iostream>
#include <cstring>
int main() {
std::string s = "hello world";
char* cstr = new char[s.length() + 1];
std::strcpy(cstr, s.c_str());
std::cout << cstr << std::endl;
delete[] cstr;
return 0;
}
```
在这个例子中,我们首先创建了一个 std::string 对象 s。然后,我们使用 new 运算符创建了一个 char* 数组 cstr,其大小为 s.length() + 1(因为字符串以 null 结尾)。接下来,我们使用 std::strcpy 函数将 s 中的内容复制到 cstr 中。最后,我们输出 cstr 并删除它。
相关问题
string转char*
要将一个string对象转换为char*类型,可以使用string的c_str()函数,该函数返回一个const char*指针,指向字符串的第一个字符,可以使用类型转换将其转换为char*类型。
以下是一个示例代码:
```c++
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "Hello World!";
char* ch = const_cast<char*>(str.c_str()); // 使用类型转换将const char*转换为char*
cout << ch << endl; // 输出转换后的字符串
return 0;
}
```
输出:
```
Hello World!
```
std::string转char*,无法将const _Elem转换为char*
在C++标准库中,`std::string`是一个动态数组,用于存储字符序列,而`char*`是指针,通常指向静态的字符数组或C风格字符串。当你尝试直接将`std::string`转换为`char*`时,会遇到一个问题,因为`std::string`通常是常量(`const`),其内部数据表示不会允许直接修改。
如果你试图将一个常量`std::string`转换为`char*`,编译器会报错,提示你不能将`const _Elem`类型的元素转换为非`const`的`char*`。这主要是出于安全考虑,防止意外的数据修改。
要解决这个问题,你可以这样做:
1. 使用`c_str()`函数获取`const char*`指针,但这只适用于`std::string`的常量引用(即`const std::string&`):
```cpp
const std::string str = "Hello";
char* cstr = str.c_str(); // 注意这里str是常量引用
```
2. 如果你需要可变的目标,可以先复制`std::string`的内容到一个新的字符数组,然后返回该数组的地址:
```cpp
std::string str = "Hello";
char* mutable_cstr = new char[str.length() + 1];
strcpy(mutable_cstr, str.c_str());
```
记得在不需要这个指针时删除分配的内存。
阅读全文