string作为C++的标准类型之一,其有很多非常方便的算法,其中replace就是一个。
string的replace主要目的是替换“段”,就是将指定的字串替换为新的字符串。其有12种重载, 均不具有“查询”功能
例如重载之一:
string st("asdfasdf");
st.replace(st.begin(), st.begin()+4, 4, 't');
cout << st << endl; //此处将会打印 ttttasdf
而对于泛型算法的replace,将具有“查询”功能,但是不具备“段替换”的功能。
例如,要将某字符串中的所有空格替换为感叹号“!”, 那么直接调用string的成员将无法实现,这就需要通过泛型算法来支持:
string st("hello world !");
replace(st.begin(), st.end(), ' ', '!');
cout << st << endl; // 此处将会打印 hello!world!!
总结:
对于replace,string的成员可以进行段替换,但是不能进行查找替换;
泛型算法的replace可以进行查找替换,但是不能进行段替换。
如果需要查找段并替换段,需要自行实现方法。