用特定字符串替換string中的所有特定字串

來源:http://www.rosoo.net/a/201209/16270.html


C++的string提供了replace方法來實現字符串的替換,但是對於將字符串中某個字符串全部替換這個功能,string並沒有實現,我們今天來做的就是這件事。
首先明白一個概念,即string替換所有字符串,將"12212"這個字符串的所有"12"都替換成"21",結果是什麼?
可以是22211,也可以是21221,有時候應用的場景不同,就會希望得到不同的結果,所以這兩種答案都做了實現,代碼如下:

  1. #include   <string>    
  2. #include   <iostream>    
  3. using   namespace   std;    
  4. string& replace_all(string& str,const string& old_value,const string& new_value)    
  5. {    
  6.     while(true)   {    
  7.         string::size_type   pos(0);    
  8.         if(   (pos=str.find(old_value))!=string::npos   )    
  9.             str.replace(pos,old_value.length(),new_value);    
  10.         else   break;    
  11.     }    
  12.     return   str;    
  13. }    
  14. string& replace_all_distinct(string& str,const string&old_value,const string& new_value)    
  15. {    
  16.     for(string::size_type   pos(0);   pos!=string::npos;   pos+=new_value.length()) {    
  17.         if(   (pos=str.find(old_value,pos))!=string::npos   )    
  18.             str.replace(pos,old_value.length(),new_value);    
  19.         else   break;    
  20.     }    
  21.     return   str;    
  22. }    
  23. int   main()    
  24. {    
  25.     cout   <<   replace_all(string("12212"),"12","21")   <<   endl;    
  26.     cout   <<   replace_all_distinct(string("12212"),"12","21")   <<   endl;    
  27. }    
  28. /* 
  29. 輸出如下:    
  30. 22211    
  31. 21221 
  32. */ 

OK,這樣的話,任務就完成啦。
其實大家可能對本博經常寫一些這樣的小程序不解,但是我總覺得,一些看起來微不足道的東西,往往在關鍵的時刻,影響你的效率或者業績,呵呵,不管怎麼說,希望對大家有用啦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章