我不能用函数在字符串中加倍字符

Zac*_*Sal 1 c++ string function

我正在尝试创建一个简单的函数,将字符串中的字符加倍并输出新字符串。前任。"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;
}
Run Code Online (Sandbox Code Playgroud)

son*_*yao 5

问题是,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;
}
Run Code Online (Sandbox Code Playgroud)