C++的string提供了replace方法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,string并没有实现,我们今天来做的就是这件事。
string& replace_all_distinct
用新字符串替换所有旧字符串,替换之后仍可能出现出现有旧的字符串
string& replace_all替换之后不再出现有旧的字符串(替换的更彻底)
编译软件:vs2013
代码如下:
#include <string>
#include <iostream>
#include <stdlib.h>
using namespace std;
string& replace_all(string& str, const string& old_value, const string& new_value)
{
while (true) {
string::size_type pos(0);
if ((pos = str.find(old_value)) != string::npos)
str.replace(pos, old_value.length(), new_value);
else break;
}
return str;
}
string& replace_all_distinct(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;
}
int main()
{
cout << replace_all(string("12212"), "12", "21") << endl;
cout << replace_all_distinct(string("12212"), "12", "21") << endl;
system("pause");
}
结果: