将 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::string 复制到其中。然后可以使用向量的 data() 方法获取 char* 指针。
可以手动分配内存使用 new 运算符分配一个字符数组,将字符从 std::string 复制到该数组中,并将该数组用作 char* 指针。由于手动内存管理问题,应谨慎使用此方法。
总之,std::string 的 c_str() 和 data() 方法提供了将 std::string 转换为 char* 的便捷方法或 char[] 数据类型。其他选项,例如复制到 std::vector 或手动内存分配,可以在特定情况下使用。
以上是如何在 C 中将 `std::string` 转换为 `char*` 或 `char[]` ?的详细内容。更多信息请关注PHP中文网其他相关文章!