#include <iostream>
#include <string>
int main() {
// 定义一个 C++ string 类型的变量
std::string str = "Hello, World!";
// 方法1: 使用 c_str() 函数将 string 转换为 const char*
const char* charPtr1 = str.c_str();
std::cout << "Using c_str(): " << charPtr1 << std::endl;
// 方法2: 使用 data() 函数将 string 转换为 const char*
const char* charPtr2 = str.data();
std::cout << "Using data(): " << charPtr2 << std::endl;
// 如果需要非 const 的 char*,可以进行显式转换(不推荐,容易引发未定义行为)
char* nonConstCharPtr = &str[0];
std::cout << "Using &str[0]: " << nonConstCharPtr << std::endl;
return 0;
}
c_str():这是最常用的方法,它返回一个指向以空字符终止的 C 风格字符串的指针(const char*)。这个字符串的内容是 std::string 的副本。
data():与 c_str() 类似,但返回的是 const char*。在 C++11 之前,data() 返回的指针可能不包含空字符终止符,但在 C++11 及之后版本中,data() 和 c_str() 是等价的。
&str[0]:直接获取 std::string 内部缓冲区的指针。这种方法不推荐使用,因为如果 std::string 对象被修改或销毁,指针可能会失效,导致未定义行为。
c_str() 或 data(),因为它们返回的是 const char*,不能直接修改内容。上一篇:c++生成随机整数
下一篇:c++ map添加元素的方法
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站