c++字符串替换

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");
}

结果:

猜你喜欢

转载自blog.csdn.net/cai_niaocainiao/article/details/81747379