string替換所有指定字符串(C++)


 

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

#include<iostream>
#include<vector>
#include<list>
#include<string>
#include<cmath>
#include<algorithm>
using namespace std;
#define debug
/**************替換空格*******************************************/
string& replace_all(string& str,const string& old_value,const string& new_value)
{
    while(true)
    {
        int pos=0;
        if((pos=str.find(old_value,0))!=string::npos)
            str.replace(pos,old_value.length(),new_value);
        else break;
    }
    return str;
}
string& repalce_all_ditinct(string& str,const string&old_value,const string& new_value)
{
    for(string::size_type pos(0);pos!=string::npos;pos+=new_value.length())
    {
        if((pos=str.find(old_value,pos))!=string::npos)
            str.replace(pos,old_value.length(),new_value);
        else break;
    }
    return str;
}
string& repalce_all_my(string& str,const string&old_value,const string& new_value)
{
    for(int pos=0;pos!=-1;pos+=new_value.length())
        if((pos=str.find(old_value,pos))!=-1)
            str.replace(pos,old_value.length(),new_value);
        else break;
    return str;
}
int main()
{
    string str="12212";
    cout<<repalce_all_ditinct(str,"12","21")<<endl;
    str="12212";
    cout<<replace_all(str,"12","21")<<endl;
    str="12212";
    cout<<repalce_all_my(str,"12","21")<<endl;
    return 0;
}

 

  1. 輸出如下:
  2. 22211
  3. 21221
  4. */

OK,這樣的話,任務就完成啦。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM