2017年11月26日 星期日

[C_ST30-中] 尋找並取代字(C++)

[C_ST30-中] 尋找並取代字

問題描述 :
給予三個英文字串,由英文大小寫字母構成,其中都可能有空白。 第一個字串是目的字串,接著的運作都是針對此字串。 第二個字串是要在第一個字串中尋找並刪除的字串, 第三個字串是要用來取代第二個字串。 結果為第一個字串中刪除了所有第二個字串並用第三個字串取代。

輸入說明 :
輸入有三列長度在128個字元內的字串,第一列為第一個目的字串, 第二列為要尋找的字串,第三列為取代第二個字串的字串。

輸出說明 :
經尋找並取代後的第一個目的字串。

範例 :

Sample Input:Sample Output:
a quick brown fox jump over the fence
fox
wolf
a quick brown wolf jump over the fence

  1. #include <iostream>  
  2. #include<iomanip>    
  3. #include<string>  
  4.    
  5. using namespace std;  
  6.    
  7. int main() {  
  8.     // [C_ST41-中] 字串取代  
  9.     string P, Q, R;  
  10.     //將字串P中所有出現字串Q的部分取代成字串R  
  11.     getline(cin, P);  
  12.     getline(cin, Q);  
  13.     getline(cin, R);  
  14.     int fpos = 0;  
  15.     while(1)  
  16.     {  
  17.         fpos = P.find(Q, fpos); //在P字串中尋找子字串Q  
  18.         if(fpos != string::npos)  
  19.         {  
  20.             P.replace(fpos, Q.size(), R); //取代  
  21.             fpos = fpos + Q.size();  
  22.         }  
  23.         else  //如果找不到就跳出迴圈  
  24.         {  
  25.             break;  
  26.         }  
  27.     }  
  28.     cout << P << endl;  
  29.     return 0;  
  30. }  

沒有留言:

張貼留言