C++ Char数组和String之间的相互转换
在C++中,char数组和std::string类型之间的转换可以通过以下几种方法实现:
1. std::string 到 char 数组
- 使用
c_str()方法:这是将std::string对象转换为const char*的标准方法。std::string str = "Hello, World!"; const char* cstr = str.c_str(); char charArray[20]; strncpy(charArray, cstr, 20); // 复制字符串到数组,注意数组大小和可能的截断
2. char 数组到 std::string
使用
std::string的构造函数:可以直接使用char数组来构造std::string对象。char charArray[] = "Hello, World!"; std::string str(charArray);使用
std::string的assign()方法:如果已经有一个std::string对象,可以使用assign()方法来更新其内容。std::string str; str.assign(charArray, sizeof(charArray) - 1); // 减去1以排除结尾的空字符
注意事项
- 内存分配:当你从
std::string转换到char数组时,需要确保数组有足够的空间来存储转换后的字符串,包括结尾的空字符\0。 - 字符串终止符:C 风格的字符串(
char数组)需要以\0结尾,表示字符串的结束。std::string类型会自动管理这个终止符,但当你转换时需要注意。 - 性能:使用
c_str()可能会涉及复制操作,尤其是在循环中频繁调用时,可能会影响性能。如果可能,使用std::string的引用或迭代器来避免不必要的复制。 - 类型安全:使用
std::string可以提供类型安全和自动内存管理,而char数组则需要手动管理内存和边界条件。
例子
#include <iostream>
#include <string>
int main() {
// 从 std::string 转换到 char 数组
std::string myString = "Example String";
const char* cStr = myString.c_str();
char myCharArray[50];
strncpy(myCharArray, cStr, sizeof(myCharArray) - 1);
myCharArray[sizeof(myCharArray) - 1] = '\0'; // 确保字符串终止
// 从 char 数组转换回 std::string
std::string anotherString(myCharArray);
std::cout << "Original String: " << myString << std::endl;
std::cout << "Char Array String: " << myCharArray << std::endl;
std::cout << "Converted Back String: " << anotherString << std::endl;
return 0;
}
这个例子演示了如何在 std::string 和 char 数组之间进行转换,并展示了如何使用 c_str() 和 std::string 的构造函数。
2万+

被折叠的 条评论
为什么被折叠?



