用过python的朋友应该知道,python的string中有个replace函数,其功能是实现字符串的替换,默认情况下是替换所有,如果加入参数的话会根据设定的个数进行替换,比如下面的例子:
>>> import string
>>> str1 = "ab1ab2ab3ab4"
>>> print string.replace(str1,"ab","cd")
cd1cd2cd3cd4
>>> print string.replace(str1,"ab","cd",1)
cd1ab2ab3ab4
>>> print string.replace(str1,"ab","cd",2)
cd1cd2ab3ab4
>>>
在c++中,我也想这么用……暂时还没找到现成的,就自己写了个。
这里贴出来函数的代码,也方便我以后使用:
std::string m_replace(std::string str,std::string pattern,std::string dstPattern,int count=-1)
{
std::string retStr="";
string::size_type pos;
int szStr=str.length();
int szPattern=pattern.size();
int i=0;
int l_count=0;
if(-1 == count) // replace all
count = szStr;
for(i=0; i<szStr; i++)
{
pos=str.find(pattern,i);
if(std::string::npos == pos)
break;
if(pos < szStr)
{
std::string s=str.substr(i,pos-i);
retStr += s;
retStr += dstPattern;
i=pos+pattern.length()-1;
if(++l_count >= count)
{
i++;
break;
}
}
}
retStr += str.substr(i);
return retStr;
}
好,就这些了,希望对你有帮助。