嗨,我正在寻找将多维char数组复制到char * string中的方法 我可以将多维char数组复制到std :: string结果中。
string result;
for (int i=0; i < key; i++)
for (int j=0; j < text.length(); j++)
if (rail[i][j]!='\n')
result.push_back(rail[i][j]);`
同样,我想将2D char数组数据复制到char * string
答案 0 :(得分:0)
您可以从C ++字符串对象获取char *字符串。有一个函数c_str()从C ++字符串返回C字符串。
答案 1 :(得分:0)
如果char *string
表示c样式的字符串(即char
个字符的数组),则需要在下面的代码中跟踪最新位置(index
) ),然后依次设置每个字符。这是为了避免复制。否则,请先构造字符串,然后使用c_str()
,如其他答案所述。
#include <vector>
#include <iostream>
using std::vector;
#include <string>
using std::string;
int main() {
const int key = 2;
string text = "ab";
string rail[2] = {text, text};
char result[key * 100];
int index = 0;
for (int i=0; i < key; i++)
for (int j=0; j < text.length(); j++)
if (rail[i][j]!='\n')
result[index++] = rail[i][j];
for (int i = 0; i < index; i++) {
std::cout << result[i] << " " << std::endl;
}
}
答案 2 :(得分:0)
让我们假设这些操作都已完成,也就是说,首先您已经完成了此操作:
std::string result;
for (int i=0; i < 2; i++)
for (int j=0; j < len; j++)
result.push_back(Array[i][j]);
那么您已经 一个存储在std::string
中的char *数组。
char *string = new char[result.size()];
string = strdup(test1.c_str());
现在,如果跳过std :: string步骤(为什么平台不支持该步骤?),您宁愿得到这样的内容:
char *string = new char[string_size]; // you have to either measure it beforehand or calculate from array size
int counter = 0;
for (int i=0; i < 2; i++)
for (int j=0; j < len; j++)
string[counter++] = Array[i][j];
如果这是C代码,则用new
调用替换malloc
表达式。而且此代码存在缺陷,例如您要么分配的内存超过了所需的内存,要么应该在分配缓冲区之前计算缓冲区的长度。极端的情况是在达到其容量时重新分配缓冲区。 std::string
自动做到这一点。
除非您没有告诉我们一些有关您需要的重要信息,否则我不明白为什么这可能是一个设计难题。
通常,除非您设计自己的容器,否则C ++代码永远不会像这样。在与ISO兼容的平台上,在大多数嵌入式系统上,您将拥有std :: string,例如Arduino,您将可以访问String类。