查看: 249  |  回复: 0
C++替换全部str1成str2 【子函数】f_repalce_all(string strOrigin, string str1, string str2)
楼主
发表于 2023年3月20日 16:32

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


您需要登录后才可以回帖 登录 | 立即注册
【本版规则】请勿发表违反国家法律的内容,否则会被冻结账号和删贴。
用户名: 立即注册
密码:
2020-2024 MaNongKu.com