C++ 标准库也可以在不使用 BOOST 的情况下访问这些函数。请参阅replace C++ Reference。这是最好的方法吗?我想这有待讨论。要替换多个/不同的字符,您可能需要多次调用 replace。
#include <string>
string& replace( size_type index, size_type num, const string& str );
string& replace( size_type index1, size_type num1, const string& str, size_type index2, size_type num2 );
string& replace( size_type index, size_type num, const Char* str );
string& replace( size_type index, size_type num1, const Char* str, size_type num2 );
string& replace( size_type index, size_type num1, size_type num2, Char ch);
string& replace( iterator start, iterator end, const string& str );
string& replace( iterator start, iterator end, const Char* str );
string& replace( iterator start, iterator end, const Char* str, size_type num );
string& replace( iterator start, iterator end, size_type num, Char ch );
string& replace( iterator start, iterator end, input_iterator start2, input_iterator end2 );
Example program:
// replacing in a string
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string base="this is a test string.";
string str2="n example";
string str3="sample phrase";
string str4="useful.";
// function versions used in the same order as described above:
// Using positions: 0123456789*123456789*12345
string str=base; // "this is a test string."
str.replace(9,5,str2); // "this is an example string."
str.replace(19,6,str3,7,6); // "this is an example phrase."
str.replace(8,10,"just all",6); // "this is just a phrase."
str.replace(8,6,"a short"); // "this is a short phrase."
str.replace(22,1,3,'!'); // "this is a short phrase!!!"
// Using iterators: 0123456789*123456789*
string::iterator it = str.begin(); // ^
str.replace(it,str.end()-3,str3); // "sample phrase!!!"
str.replace(it,it+6,"replace it",7); // "replace phrase!!!"
it+=8; // ^
str.replace(it,it+6,"is cool"); // "replace is cool!!!"
str.replace(it+4,str.end()-4,4,'o'); // "replace is cooool!!!"
it+=3; // ^
str.replace(it,str.end(),str4.begin(),str4.end());
// "replace is useful."
cout << str << endl;
return 0;
}