为什么我的“字符串混合”方法会返回意外结果?

时间:2015-09-30 00:46:51

标签: c++ string c++14 subscript

我正在尝试实现一个简单的“字符串混合”方法,它递归地混合两个大小相等的字符串(例如,cat和dog变为cdaotg - 字符串1中的第一个字母,字符串2中的第一个字母,依此类推) 。

我的方法如下:

string mingleStrings(string s1, string s2, int index) {
    if (index >= s1.length()) {
        return "";
    } else {
        string mingled = "";
        mingled += s1[index] + s2[index];
        mingled += mingleStrings(s1,s2,++index);
        return mingled;
    }
}

当我在我的字符串(s1 [index])上使用下标运算符时,它将整个字符串返回到该索引。要在特定索引处获取字符串的特定字符,我需要键入s1 [index,index]。这对我来说是新的。

1 个答案:

答案 0 :(得分:4)

您的代码存在问题:

mingled += s1[index] + s2[index];

这样做是在index添加代码字符,然后将添加结果作为单个字符添加到字符串中。

应该是两个单独的操作:

mingled += s1[index];
mingled += s2[index];

这样,每次调用+=时,都会在字符串中附加一个字符,从而产生您期望的结果。

Demo.