首页 > 解决方案 > 我不能用函数在字符串中加倍字符

问题描述

我正在尝试创建一个简单的函数,将字符串中的字符加倍并输出新字符串。前任。“hello world”会变成“hheelloo wwoorrlldd” 但是,使用我编写的函数,输出是空的。如果有人能告诉我为什么会这样,我将不胜感激。谢谢!

using namespace std;
string doubleChar(string str) {
    string newString;
    for(int i =0;i<str.size();++i){
        newString[i] = str[i];
        newString[i+1] = str[i];
    }
    return newString;
}

标签: c++stringfunction

解决方案


问题是,newString总是空的,它不包含任何元素。像访问它newString[i]newString[i+1]导致UB。

您需要向其中添加元素,例如

string doubleChar(const string& str) { // apply pass-by-reference to avoid copy
    string newString;
    newString.reserve(str.size() * 2); // reserve the capacity to avoid reallocation
    for(int i =0;i<str.size();++i){
        newString += str[i];
        newString += str[i];
        // or use push_back or append
    }
    return newString;
}

推荐阅读