如何将多个字符串转换为相同的char数组?

时间:2015-03-18 17:40:24

标签: c++ arrays string

我需要一种方法将多个字符串转换为相同的char数组。例如,如果我有

string str1;
string str2;
char *myArray = new char[str1.size() + str2.size() + 1];

将字符串字符添加到myArray

的最佳方法是什么?

3 个答案:

答案 0 :(得分:4)

您可以使用另一个string来合并两个:

auto myArray = str1 + str2;

然后,您可以使用char方法访问基础(常量!).c_str数组,或者,如果要修改某些字符,请使用{{1}上的operator[]访问它们}}

如果您需要实际的,可修改的string样式数组,请使用char*

std::vector

然后,您可以使用std::vector<char> myArray (str1.begin(), str1.end()); myArray.insert(myArray.end(), str2.begin(), str2.end()); myArray.push_back('\0'); // If the array should be zero terminated 方法访问基础的,可修改的char数组。

请注意,像.data这样的可变长度数组是一个编译器扩展,只适用于某些编译器。它们不是标准的C ++。

答案 1 :(得分:2)

strcpy(myarray,(str1+str2).c_str())

strncpy(myarray,(str1+str2).c_str(),(str1+str2).length())

答案 2 :(得分:0)

使用strcpy和strcat:

strcpy(myArray,str1.c_str());
strcat(myArray,str2.c_str());

虽然,表达式char myArray[str1.size() + str2.size() + 1]不会在C ++下编译,因为禁止使用VLA,使用动态内存分配:

char* myArray = new char[str1.size() + str2.size() + 1]