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)
问题是,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)