题目
描述
输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
输入描述:
每组数据输入包括3行,第1行是包含多个单词的字符串s,第2行是待替换的单词a(长度<=100),第3行是a将被替换的单词b(长度<=100)。s, a, b 最前面和最后面都没有空格。
输出描述:
每个测试数据输出只有 1 行, 将s中所有单词a替换成b之后的字符串。
示例1
输入:
You want someone to help you
You
I
输出:
I want someone to help you
题解
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str,stra,strb;
getline(cin,str);//输入字符串s
cin>>stra>>strb;//输入字符串a,b
str=" "+str+" ";//给s,a,b,前后加上空格,便于下面用erase函数清除掉要替换的部分
stra=" "+stra+" ";
strb=" "+strb+" ";
int pos=-1;
while(1)//找到与字符串a要替换的部分
{
pos=str.find(stra);
if(pos==-1)//没有找到 就不用处理
break;
else//找到了,就用erase函数清除掉要替换的部分,再用insert函数插入目标串
{
str.erase(pos,stra.size());
str.insert(pos,strb);
}
}
int n=str.size();
cout<<str.substr(1,n-2)<<endl;//输出替换后的串
return 0;
}