c++ - 我不能用函数在字符串中加倍字符
问题描述
我正在尝试创建一个简单的函数,将字符串中的字符加倍并输出新字符串。前任。“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]
并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;
}
推荐阅读
- python - 如何在 Django 中修复“以 10 为基数的 int() 的无效文字”
- ios - ios swift tableview不显示自定义单元格
- c# - 在 UWP 中,WPF 的 DependencyProperty 类的 DependencyType 属性等价于什么?
- jupyter-notebook - 将十六进制代码从 TIFF 转换为可读格式
- java - 用于休眠 crud 操作的 Junit 测试
- javascript - 如何获取 HTML5 输入字段的“字符移动距离”
- google-apps-script - AppsScript - 如何将项目的输出(错误率、执行、用户)导入 Googlesheet
- mysql - 3个表之间的快速查询mysql
- bash - 将日期字符串转换为日期纪元 UNIX AIX
- python - 数组的最内维