字符串的查找与删除,单词替换

题目描述
输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。

输入
多组数据。每组数据输入包括3行,
第1行是包含多个单词的字符串 s,
第2行是待替换的单词a,(长度<=100)
第3行是a将被替换的单词b。(长度<=100)
s, a, b 最前面和最后面都没有空格。

输出
每个测试数据输出只有 1 行,
将s中所有单词a替换成b之后的字符串。

样例输入
I love Tian Qin
I
You
样例输出
You love Tian Qin

思路:使用c++的find可以快速找到位置,erase方便进行消除空格,replace进行替换
pos = a.find(find_word)返回查找的下标,如果为-1,则没找到。
a.replace(pos,b,replace_word);从pos处开始,长度为b,替换为replace_word
a.erase(b,c)从b处开始消去c位

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;

int main()
{
    string a,b,c;
    while(getline(cin,a))
    {
        getline(cin,b);getline(cin,c);//此处用cin会出错
        a=" "+a+" ";b=" "+b+" ";c=" "+c+" ";
        while(a.find(b)!=-1)
        {
            a.replace(a.find(b),b.size(),c);
        }
        a.erase(0,1);
        a.erase(a.size(),1);
        cout<<a<<endl;
    }

    return 0;
}

参考博文:
https://blog.csdn.net/qq_39690706/article/details/84307420
https://blog.csdn.net/qq_39690706/article/details/84307859

发布了21 篇原创文章 · 获赞 0 · 访问量 394

猜你喜欢

转载自blog.csdn.net/weixin_41605876/article/details/104625363