C++ string split()和 replaceAll()

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

VS2008实现C++ string split()和 replaceAll()

#include "stdafx.h"
#include  
#include  
#include  


using namespace std; 


vector mySplit(const string& str, string sp_string)  // split(), str 是要分割的string
{ 
    vector vecString; 
    int sp_stringLen = sp_string.size(); 
    int lastPosition = 0; 
    int index = -1; 
    while(-1 != (index=str.find(sp_string , lastPosition))) 
    { 
        vecString.push_back(str.substr(lastPosition, index - lastPosition)); 
        lastPosition = index +sp_stringLen; 
    } 
    string lastStr = str.substr(lastPosition); 
    if ( !lastStr.empty() ) 
    { 
        vecString.push_back(lastStr); 
    } 
    return vecString; 
} 


string myReplaceAll(const string& str, string org_str, string rep_str) // 把org_str 替换为rep_str; 
{ 
    vector  delimVec = mySplit(str, org_str); 
    if (delimVec.size() <= 0) 
    { 
        cout<<"can not find"<::iterator it = delimVec.begin(); 
    for (; it != delimVec.end(); ++it) 
    { 
        target = target + (*it)+ rep_str; 
    } 
//target = target +(*it); 
    return target; 
    } 

// 把org_strVec中的string全部替换为rep_str; 
string myReplaceAll(const string& str, vector& org_strVec, string rep_str)
{ 
    vector::iterator org_it = org_strVec.begin(); 
    string org_str(""); 
    string target = str; 
    string strTarget = str; 
    for (; org_it != org_strVec.end(); ++org_it) 
    { 
        org_str = *org_it; 
        vector delimVec = mySplit(strTarget, org_str); 
        target = ""; 
        if (delimVec.size() > 0) 
        { 
            vector::iterator it = delimVec.begin(); 
            for (;it != delimVec.end(); ++it) 
            { 
                target = target + (*it) +rep_str; 
            } 
            strTarget = target; 
        } 
    } 
    return strTarget; 
} 




int _tmain(int argc, _TCHAR* argv[]) 
{ 
    string str = "ewrsdrtwrtsdfsdsdfrtfgsdfertgdffgertsdfsd"; 
    string splitStr = "sd"; 
    string replaceStr1 = "mmmm"; 
    string replaceStr2 = "xxxx"; 
    vector strVec1 = mySplit(str, splitStr); 
    for (vector::iterator it = strVec1.begin(); it != strVec1.end(); ++it) 
    { 
        cout<< "!!!  "<<*it< strVec2 (strX, strX + sizeof(strX)/sizeof(strX[0])); 

    cout << strVec2[0]<<"13q3224"<


转载于:https://my.oschina.net/u/1782374/blog/368238

你可能感兴趣的:(C++ string split()和 replaceAll())