第一种方法是调用其 c_str() 成员函数(代表 C 字符串):
std::string proverb {"Many a mickle makes a muckle."};
const char* proverb_c_str = proverb.c_str();
这种转换会得到一个类型为const char* 的 C 字符串。因为是常量,所以不能使用该指针来修改 string 对象中的字符,而只能访问它们。
第二种方法是使用 string 对象的 data() 函数,从 C++17 开始,该函数会得到一个非 const char* 指针(在 C++17 之前,使用 data() 也会得到一个 const char* 指针):
char* proverb_data = proverb.data();
只有当调用遗留的 C 样式的函数时,才应该转换为 C 样式的字符串。
在自己的代码中,我们推荐以一致的方式使用 std::string 对象,因为它们比普通的 char 数组安全得多,也方便得多。