我需要一种方法将多个字符串转换为相同的char数组。例如,如果我有
string str1;
string str2;
char *myArray = new char[str1.size() + str2.size() + 1];
将字符串字符添加到myArray
?
答案 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]