编程题,文档编辑,修改字符串内数字

暑假期间, 妈妈让小华帮忙修改英文资料, 英文中还有一些统计数据 (统计数据都是正整数, 而且其前后都有空格)。 妈妈说: 如果文档结尾处有 “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;
}