首页 >后端开发 >C++ >如何在 C 中将 `std::string` 转换为 `char*` 或 `char[]` ?

如何在 C 中将 `std::string` 转换为 `char*` 或 `char[]` ?

Patricia Arquette
Patricia Arquette原创
2024-11-30 15:39:09142浏览

How to Convert a `std::string` to a `char*` or `char[]` in C  ?

将 std::string 转换为 char* 或 char[]

在 C 中,可能会遇到需要转换 std:: string(保存字符序列)转换为 char* 或 char[] 表示的以 null 结尾的字符数组。但是,使用赋值运算符直接转换会导致错误。

要实现此转换,可以使用多种方法:

1. c_str() 方法:

std::string 的 c_str() 方法返回一个指向底层 C 风格字符串的指针,该字符串以 null 结尾。该指针可以直接分配给 char* 变量。

std::string str = "string";
const char *cstr = str.c_str();

2. data() 方法:

std::string 的 data() 方法也返回一个指向底层 C 风格字符串的指针,但它是非常量。该指针可以分配给不带 const 限定符的 char* 变量。

std::string str = "string";
char *cstr = str.data();

其他选项:

  • 复制到 std: :向量:

一个人可以创建一个std:: 字符向量并将字符从 std::string 复制到其中。然后可以使用向量的 data() 方法获取 char* 指针。

  • 手动内存分配:

可以手动分配内存使用 new 运算符分配一个字符数组,将字符从 std::string 复制到该数组中,并将该数组用作 char* 指针。由于手动内存管理问题,应谨慎使用此方法。

总之,std::string 的 c_str() 和 data() 方法提供了将 std::string 转换为 char* 的便捷方法或 char[] 数据类型。其他选项,例如复制到 std::vector 或手动内存分配,可以在特定情况下使用。

以上是如何在 C 中将 `std::string` 转换为 `char*` 或 `char[]` ?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn