find函数有一个坑,那就是不是单词也会匹配成功,比如说your you me,要将you替换为I,那么your前面的you也会被替换走,所以要在每个字符串的前后都加上空格来避免这种情况的发生。
#include <iostream>
#include <cstdio>
#include<string>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
string s,a,b;
getline(cin,s);
getline(cin,a);
getline(cin,b);
s=" "+s+" ";
a=" "+a+" ";
b=" "+b+" ";
int start=s.find(a);
while(start!=string::npos){
s.erase(start,a.length());
s.insert(start,b);
start=s.find(a);
}
int n=s.size();
cout<<s.substr(1,n-2);
}