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