-
题目描述:
-
输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
-
输入:
-
多组数据。每组数据输入包括3行,第1行是包含多个单词的字符串 s,第2行是待替换的单词a,(长度<=100)第3行是a将被替换的单词b。(长度<=100)s, a, b 最前面和最后面都没有空格.
-
输出:
-
每个测试数据输出只有 1 行,将s中所有单词a替换成b之后的字符串。
-
样例输入:
-
You want someone to help you You I
-
I want someone to help you
样例输出:
替换的是单词,如果
Youwant someone to help you
You
I
这样是替换不了的。下面给出代码:
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[]) {
string s,a,b;
while(getline(cin,s)){
cin>>a>>b;
//统一将字符串前后加空格,方便确认单词
s=' '+s+' ';
a=' '+a+' ';
b=' '+b+' ';
int l=0;
l=s.find(a,0);
//循环,将所以的单词替换掉
while(l!=string::npos){
l=s.find(a,0);
if(l==string ::npos) break;
s.replace(l,a.size(),b);
}
//去掉字符串前后的空格
s.erase(0,1);
s.erase(s.size()-1,1);
cout<<s<<endl;
//将输入缓冲区的回车键吃掉
cin.get();
}
}