replace算法:
replace函数包含于头文件#include<string>中。
泛型算法replace把队列中与给定值相等的所有值替换为另一个值,整个队列都被扫描,即此算法的各个版本都在
线性时间内执行———其复杂度为O(n)。
即replace的执行要遍历由区间[frist,last)限定的整个队列,以把old_value替换成new_value。
下面介绍replace()函数常用的九中方法:
用法一:
用str替换指定字符串从起始位置pos开始长度为len的字符
示例代码:
- #include<iostream>
- #include<string>
- using namespace std;
- int main()
- {
- string line="qwer& &qwer&& &&";
- line=line.replace(line.find("&"),1,"1");
- cout<<line<<endl;
- return 0;
用法二:
用str替换 迭代器起始位置 到 结束位置 的字符
示例代码:
- #include<iostream>
- #include<string>
- using namespace std;
- int main()
- {
- string line="qwer& &qwer&& &&";
- line=line.replace(line.begin(),line.begin()+6,"1");
- cout<<line<<endl;
- return 0;
- }
用法三:
用substr的指定子串(给定起始位置和长度)替换从指定位置上的字符串
示例代码:
- #include<iostream>
- #include<string>
- using namespace std;
- int main()
- {
- string line="qwer& &qwer&& &&";
- string substr="012345";
- line=line.replace(0,5,substr,substr.find("1"),3);
- cout<<line<<endl;
- return 0;
- }
用法四:
用str替换大串指定位置上的子串(string转char*时编译器可能会报出警告,不建议这样做 )
示例代码:
- #include<iostream>
- #include<string>
- using namespace std;
- int main()
- {
- string line="qwer& &qwer&& &&";
- char* str="012345";
- line=line.replace(0,5,str);
- cout<<line<<endl;
- return 0;
- }
用法五:
用str替换从指定迭代器位置的字符串 (string转char*时编译器可能会报出警告,不建议这样做 )
示例代码:
- #include<iostream>
- #include<string>
- using namespace std;
- int main()
- {
- string line="qwer& &qwer&& &&";
- char* str="012345";
- line=line.replace(line.begin(),line.begin()+9,str);
- cout<<line<<endl;
- return 0;
- }
用法六:
用s的前n个字符替换从开始位置pos长度为len的字符串 (string转char*时编译器可能会报出警告,不建议这样做 )
示例代码:
- #include<iostream>
- #include<string>
- using namespace std;
- int main()
- {
- string line="qwer& &qwer&& &&";
- char* str="012345";
- line=line.replace(0,9,str,5);
- cout<<line<<endl;
- return 0;
- }
用法七:
用s的前n个字符替换指定迭代器位置(从i1到i2)的字符串 (string转char*时编译器可能会报出警告,不建议这样做 )
示例代码:
- #include<iostream>
- #include<string>
- using namespace std;
- int main()
- {
- string line="qwer& &qwer&& &&";
- char* str="012345";
- line=line.replace(line.begin(),line.begin()+9,str,5);
- cout<<line<<endl;
- return 0;
- }
用法八:
用重复n次的c字符替换从指定位置pos长度为len的内容
示例代码:
- #include<iostream>
- #include<string>
- using namespace std;
- int main()
- {
- string line="qwer& &qwer&& &&";
- char c='1';
- line=line.replace(0,9,3,c);
- cout<<line<<endl;
- return 0;
- }
用法九:
用重复n次的c字符替换从指定迭代器位置(从i1开始到结束)的内容
示例代码:
- #include<iostream>
- #include<string>
- using namespace std;
- int main()
- {
- string line="qwer& &qwer&& &&";
- char c='1';
- line=line.replace(line.begin(),line.begin()+9,3,c);
- cout<<line<<endl;
- return 0;
- }
注:
有使用迭代器类型的参数不限于string类型,可以为vector、list等其他类型迭代器。