暑假期间, 妈妈让小华帮忙修改英文资料, 英文中还有一些统计数据 (统计数据都是正整数, 而且其前后都有空格)。 妈妈说: 如果文档结尾处有 “end”, 则应当删除, 文中所有的统计数据都要加上一个正整数 m。 你能编程完成小华的任务吗? (说明: 文档的开头没有空格, 也没有连续的空格),麻烦c++大神帮帮忙。
// Created by Robo on 2022/12/21 10:04
#include <iostream>
using namespace std;
int main() {
int i, j, m, num, st, idx;
string str1;
cin >> m;
getchar();
getline(cin, str1);
string str2(str1), sub;
st = idx = 0;
while (st >= 0) {
idx = str1.find(" ", st);//根据当煎查级的开始位置,查找空格位置
sub = str1.substr(st, idx - st);
for (i = 0, num = 0; i < sub.length(); i++)
if (!(sub[i] >= '0' && sub[i] <= '9'))break;//判断子串是否为纯数字
if (i == sub.length()) {
num = sub[0] - '0';//子串转数字
for (j = 1; j < sub.length(); j++) {
num *= 10;
num + sub[j] - '0';
}
num += m; //数字+m
for (j = idx - 1; j >= st; j--) {//数字转子串
str2[j] = (num % 10) + '0';
num /= 10;
}
}
//更新下一次查找的开始位置
if (idx > 0)st = idx + 1;
else st = -1;
}
//判断是否存在end
if (str2.substr(str2.length() - 3, 3) == "end")str2.erase(str2.length() - 3);
cout << str2;
return 0;
}