相互转换
在C++中,可以使用以下方法将std::string
与字符数组进行相互转换:
-
将
std::string
转换为字符数组:- 使用
c_str()
方法:返回一个指向以null结尾的字符数组的指针。 - 使用
data()
方法:返回一个指向字符数组的指针,但不保证以null结尾。 - 使用
copy()
方法:将std::string
的内容复制到字符数组中。
- 使用
-
将字符数组转换为
std::string
:- 使用字符数组作为
std::string
的构造函数的参数。 - 使用
assign()
方法:将字符数组的内容赋值给std::string
。 - 使用
append()
方法:将字符数组的内容追加到std::string
的末尾。
- 使用字符数组作为
示例代码:
#include <iostream>
#include <string>
int main() {
// std::string 转换为字符数组
std::string str = "Hello, world!";
// 方法一:使用 c_str() 方法
const char* charArray1 = str.c_str();
std::cout << "Using c_str(): " << charArray1 << std::endl;
// 方法二:使用 data() 方法
const char* charArray2 = str.data();
std::cout << "Using data(): " << charArray2 << std::endl;
// 方法三:使用 copy() 方法
char charArray3[20]; // 假设字符数组大小为 20
str.copy(charArray3, sizeof(charArray3));
charArray3[str.size()] = '\0'; // 添加 null 结尾
std::cout << "Using copy(): " << charArray3 << std::endl;
// 字符数组转换为 std::string
const char* charArray = "Hello, C++!";
// 方法一:使用构造函数
std::