string转char用c_str()获取只读指针,char转string可用构造函数复制内容,需可修改缓冲区时应预分配空间并取地址。

在C++中,string 和 char* 的相互转换是常见操作,尤其在调用C风格函数或处理底层字符串时非常实用。下面介绍它们之间的转换方法。
要将 std::string 转换为 const char*,可以使用 c_str() 或 data() 方法:
示例代码:
#include <string>
#include <iostream>
<p>int main() {
std::string str = "Hello, world!";
const char* ptr = str.c_str(); // 推荐方式
std::cout << ptr << std::endl;
return 0;
}注意:返回的是 const char*,不能修改其内容。如果需要可修改的 char*,需自行复制。
立即学习“C++免费学习笔记(深入)”;
将 char* 转为 std::string 非常简单,可以直接用构造函数或赋值:
示例代码:
#include <string>
#include <iostream>
<p>int main() {
const char* ptr = "Hello, C++";
std::string str(ptr); // 用构造函数
// 或者
std::string str2 = ptr;</p><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">std::cout << str << std::endl;
return 0;}
有时需要从 string 得到可修改的字符数组(如用于填充或传给C函数),可以通过以下方式:
std::string str(10, '\0'); // 预分配空间 char* mutable_buf = &str[0]; // 获取首字符地址(C++98/03不保证有效,C++11起允许) // 或使用 data()(C++17起 data() 返回非const指针) char* mutable_buf2 = str.data();
注意:操作过程中不能调用可能引起重分配的 string 方法(如 push_back、resize 等),否则指针失效。
基本上就这些。记住:string 到 char* 用 c_str() 获取只读指针,反过来直接构造即可。需要修改内容时,确保使用正确的可写缓冲区。转换不复杂,但容易忽略 const 和生命周期问题。
以上就是c++++中string和char*怎么相互转换_c++字符串与字符指针转换的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号