C++经典代码之:替换全部str1成str2 【子函数】f_repalce_all(string strOrigin, string str1, string str2)
std::string 没有提供类似repalceALL之类的方法,我们只能使用std::string::replace方法逐个替换子字符串。
#include <iostream>
#include <string>
using namespace std;

// 这种也行 string f_repalce_all(string strOrigin, const string &str1, const string &str2)
string f_repalce_all(string strOrigin, string str1, string str2)
{
	string strResult = strOrigin;
	for (string::size_type pos = 0; pos != string::npos; pos += str2.length())
	{
		pos = strResult.find(str1, pos);
		if (pos != string::npos)
			// find函数在找不到指定值得情况下会返回string::npos
			strResult.replace(pos, str1.length(), str2);
		else
			break;
	}
	return strResult;
}

int main()
{
	string str = "  这就是 aaaBBBaa 喜欢的    百事知道  。ccbbaa  ";

	cout << "原始的字符串:" << str << endl;

	str = f_repalce_all(str, "aa", "AAA");
	cout << "替换字符aa后:" << str << endl; // 多个aa会被替换
	cout << "替换空格后  :" << f_repalce_all(str, " ", "") << endl; // 多个空格会被替换

	system("pause");
	return 0;
}
运行结果:
原始的字符串:  这就是 aaaBBBaa 喜欢的    百事知道  。ccbbaa
替换字符aa后:  这就是 AAAaBBBAAA 喜欢的    百事知道  。ccbbAAA
替换空格后  :这就是AAAaBBBAAA喜欢的百事知道。ccbbAAA
创作不易,支持我们就点击下方广告用优惠券买东西吧 :)

百事知道 版权所有,禁止转载,除非给出本网网址。