我正在尝试创建一个简单的函数,将字符串内的字符加倍并输出新字符串。前任。 “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;
}
问题是,newString
始终为空,它不包含任何元素。访问它就像newString[i]
and 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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)