思路:设字符串为s1,要替换的单词s2,替换内容s3。设两个标记位f1、f2,f1指向单词后的空格,f2指向每个单词的第一个字母。遍历s1,每当遇到空格或遍历到字符串结束时进行一次判断,更新f1和f2,截取f1和f2之间的单词st与s2对比,如果相同则输出s3,不相同输出st。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1, s2, s3;
    while (getline(cin, s1), getline(cin, s2), getline(cin, s3))
    {
        int f1 = -1, f2;
        for (int i = 0; i <= s1.size(); i++)
        {
            if (s1[i] == ' ' || i == s1.size())
            {
                f2 = f1 + 1;//f2指向单词第一个字符
                f1 = i;//f1指向空格
                string st = s1.substr(f2, f1 - f2);
                if (st == s2)
                    cout << s3;
                else
                    cout << st;
                if (i != s1.size())
                    cout << ' ';
            }
        }
        cout << endl;
    }
    return 0;
}