如何在C ++中连接两个字符串* array []

时间:2012-02-24 21:53:41

标签: c++ arrays concatenation

我有点难过。我正在构建一个由数组建模的二进制堆类。我正在尝试获取两个字符串数组,并将它们连接在一起(用于合并函数)以创建一个新数组,然后我将对其执行排序操作。

在我的界面中,两个数组都是这样初始化的:

string *heapArray;

在我的实现中,两个数组都是这样构造的:

heapArray = new string[10];

我试过的代码,不能编译,是这样的:

merged->heapArray = one->heapArray + two->heapArray;

显然我在这里做错了,但我过去没有对原始C ++数组进行任何连接,主要是用向量来安全。唉,处理这个优化任务需要它。任何指导都将不胜感激。

我意识到我没有发布太多代码,但是我对在这里发布大量代码块的人感到沮丧。我发布了我认为相关的内容,但是如果有一些具体的内容我会遗漏哪些会有所帮助,请告诉我,我会添加它。

5 个答案:

答案 0 :(得分:2)

在处理直接C ++数组时,将它们中的两个一起添加的唯一方法是分配一个新数组,并将它们从两个源数组逐个插入到新数组中

编辑: 或者是memcpy,但对于非基本数据类型来说这并不容易

答案 1 :(得分:1)

你做不到;你将两个内存地址(指针)一起添加到一个无意义的指针。我建议您将heapArray替换为vector字符串

heapArray = vector<string>(10);

然后连接两个向量。

merged.heapArray = one.heapArray;
one.heapArray.insert(one.heapArray.end(),two.heapArray.begin(),two.heapArray.end() );

此外,数据位于堆上,因此您的“heapArray”标识符仍然有效。如果您不想使用vector(出于某些学术原因),您可以通过在one中分配足够的空间并复制每个元素来合并twomerged->heapArray你的阵列。

答案 2 :(得分:0)

merged->heapArray = one->heapArray + two->heapArray;

你试图在这里添加两个指针,而不是连接字符串。你不能只是连接这样的数组,你需要分配一个新的内存区域并将它们复制(使用复杂类型的memcpy并不总是安全的。你总是可以为两者分配一个数组并将它们复制到)。

另外,为什么要在堆中使用string(假设std::string)数组?那太奇怪了。

答案 3 :(得分:0)

我认为你要找的是这样的:

string heapArray;
heapArray = new string[10]; // create an array of strings
...
string mergedString = heapArray[0] + heapArray[1];

答案 4 :(得分:0)

编译错误是由于您要添加两个不相关的指针 如果要合并两个字符串,则可以添加它们 现在你应该做的是

vector<string> v1,v2,v3;
.
.
.
for(int i = 0; i < v1.size(); i++){
    v3.push_back(v1[i] + v[i]);
}

v3将给出带有连接字符串的向量