輸入一個字符串,以回車結束(字符串長度「=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
/*
解題思路:先將s分成各個單詞,將每個單詞存在向量中,然後取出向量中的元素,逐個與a比較,若相等則替換輸出。
注:
istream& getline ( istream &is , string &str , char delim );
其中 istream &is 表示一個輸入流,譬如cin;
string&str表示把從輸入流讀入的字符串存放在這個字符串中(可以自己隨便命名,str什麼的都可以);
char delim表示遇到這個字符停止讀入,在不設置的情況下系統默認該字符爲'\n',也就是回車換行符(遇到回車停止讀入)。
*/
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
    int flag = 0;
    string s,a,b;
    vector<string>words;  //用來保存各個單詞
    vector<string>switch;  //用來保存各個單詞
    getline(cin,s);  //爲了接受一行帶空格的字符串
    cin>>a>>b;
    //將s中的單詞提取到words
    for(int i=0,j=0;i<s.size();++i){
        if(s[i]!=' ')               
            words[j] += s[i];
        else{
            ++j;
        }

    }
    for(int i=0;i<words.size();++i)
    {  //找到第一個要替換的單詞並替換
        if((0 == strcmp(words[i],a)) &&(0 == flag))
        {
            switch.push(b);
            flag++
        }//將單詞放到switch
        else
        {
            switch.push(words[i]);
        }
    }
    for(int i=0;i<switch.size();++i)
        {  //輸出
        cout<<switch[i]<<" ";
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章