C++ STL replace()函数常用用法详解

replace算法

                replace函数包含于头文件#include<string>中。

              泛型算法replace把队列中与给定值相等的所有值替换为另一个值,整个队列都被扫描,即此算法的各个版本都在

   线性时间内执行———其复杂度为O(n)。

           即replace的执行要遍历由区间[frist,last)限定的整个队列,以把old_value替换成new_value。

 

 

下面介绍replace()函数常用的九中方法:

 

用法一:

            用str替换指定字符串从起始位置pos开始长度为len的字符

            

示例代码:

  1. #include<iostream>  
  2. #include<string>  
  3. using namespace std;  
  4. int main()  
  5. {  
  6.     string line=”qwer& &qwer&& &&”;  
  7.     line=line.replace(line.find(”&”),1,“1”);//将line中的第一个&替换成1   
  8.     cout<<line<<endl;  
  9.     return 0;  
#include<iostream>




#include<string> using namespace std; int main() { string line="qwer& &qwer&& &&"; line=line.replace(line.find("&"),1,"1");//将line中的第一个&替换成1 cout<<line<<endl; return 0;

 

 

用法二:

           用str替换 迭代器起始位置 到 结束位置 的字符 

 

示例代码:

  1. #include<iostream>  
  2. #include<string>  
  3. using namespace std;  
  4. int main()  
  5. {  
  6.     string line=”qwer& &qwer&& &&”;  
  7.     line=line.replace(line.begin(),line.begin()+6,”1”);//将line从begin位置开始的6个字符替换成1   
  8.     cout<<line<<endl;  
  9.     return 0;  
  10. }  
#include<iostream>




#include<string> using namespace std; int main() { string line="qwer& &qwer&& &&"; line=line.replace(line.begin(),line.begin()+6,"1");//将line从begin位置开始的6个字符替换成1 cout<<line<<endl; return 0; }


 

用法三:

          用substr的指定子串(给定起始位置和长度)替换从指定位置上的字符串 

 

示例代码:

  1. #include<iostream>  
  2. #include<string>  
  3. using namespace std;  
  4. int main()  
  5. {  
  6.     string line=”qwer& &qwer&& &&”;  
  7.     string substr=”012345”;  
  8.     line=line.replace(0,5,substr,substr.find(”1”),3);//将line字符串0到5位置上的字符替换为substr的指定子串(从’1’位置开始的3个字符)   
  9.     cout<<line<<endl;  
  10.     return 0;  
  11. }  
#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);//将line字符串0到5位置上的字符替换为substr的指定子串(从'1'位置开始的3个字符) cout<<line<<endl; return 0; }


 

 

用法四:

           用str替换大串指定位置上的子串(string转char*时编译器可能会报出警告,不建议这样做 )

 

示例代码:

  1. #include<iostream>  
  2. #include<string>  
  3. using namespace std;  
  4. int main()  
  5. {  
  6.     string line=”qwer& &qwer&& &&”;  
  7.     char* str=“012345”;  
  8.     line=line.replace(0,5,str);//用str替换从指定位置0开始长度为5的字符串   
  9.     cout<<line<<endl;  
  10.     return 0;  
  11. }  
#include<iostream>




#include<string> using namespace std; int main() { string line="qwer& &qwer&& &&"; char* str="012345"; line=line.replace(0,5,str);//用str替换从指定位置0开始长度为5的字符串 cout<<line<<endl; return 0; }

 

 

用法五:

           用str替换从指定迭代器位置的字符串 (string转char*时编译器可能会报出警告,不建议这样做 )

 

示例代码:

  1. #include<iostream>  
  2. #include<string>  
  3. using namespace std;  
  4. int main()  
  5. {  
  6.     string line=”qwer& &qwer&& &&”;  
  7.     char* str=“012345”;  
  8.     line=line.replace(line.begin(),line.begin()+9,str);  
  9.     cout<<line<<endl;  
  10.     return 0;  
  11. }  
#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*时编译器可能会报出警告,不建议这样做 )

 

示例代码:

  1. #include<iostream>  
  2. #include<string>  
  3. using namespace std;  
  4. int main()  
  5. {  
  6.     string line=”qwer& &qwer&& &&”;  
  7.     char* str=“012345”;  
  8.     line=line.replace(0,9,str,5);//用str的前5个字符替换从0位置开始长度为9的字符串   
  9.     cout<<line<<endl;  
  10.     return 0;  
  11. }  
#include<iostream>




#include<string> using namespace std; int main() { string line="qwer& &qwer&& &&"; char* str="012345"; line=line.replace(0,9,str,5);//用str的前5个字符替换从0位置开始长度为9的字符串 cout<<line<<endl; return 0; }

 

用法七:

           用s的前n个字符替换指定迭代器位置(从i1到i2)的字符串 (string转char*时编译器可能会报出警告,不建议这样做 )

 

示例代码:

  1. #include<iostream>  
  2. #include<string>  
  3. using namespace std;  
  4. int main()  
  5. {  
  6.     string line=”qwer& &qwer&& &&”;  
  7.     char* str=“012345”;  
  8.     line=line.replace(line.begin(),line.begin()+9,str,5);//用str的前5个字符替换指定迭代器位置的字符串    
  9.     cout<<line<<endl;  
  10.     return 0;  
  11. }  
#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);//用str的前5个字符替换指定迭代器位置的字符串 cout<<line<<endl; return 0; }


 

 

用法八:

           用重复n次的c字符替换从指定位置pos长度为len的内容 

 

示例代码:

  1. #include<iostream>  
  2. #include<string>  
  3. using namespace std;  
  4. int main()  
  5. {  
  6.     string line=”qwer& &qwer&& &&”;  
  7.     char c=‘1’;  
  8.     line=line.replace(0,9,3,c);//用重复3次的c字符替换从指定位置0长度为9的内容   
  9.     cout<<line<<endl;  
  10.     return 0;  
  11. }  
#include<iostream>




#include<string> using namespace std; int main() { string line="qwer& &qwer&& &&"; char c='1'; line=line.replace(0,9,3,c);//用重复3次的c字符替换从指定位置0长度为9的内容 cout<<line<<endl; return 0; }


 

 

用法九:

           用重复n次的c字符替换从指定迭代器位置(从i1开始到结束)的内容 

 

示例代码:

  1. #include<iostream>  
  2. #include<string>  
  3. using namespace std;  
  4. int main()  
  5. {  
  6.     string line=”qwer& &qwer&& &&”;  
  7.     char c=‘1’;  
  8.     line=line.replace(line.begin(),line.begin()+9,3,c);//用重复3次的c字符替换从指定迭代器中的内容   
  9.     cout<<line<<endl;  
  10.     return 0;  
  11. }  
#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);//用重复3次的c字符替换从指定迭代器中的内容 cout<<line<<endl; return 0; }


 

 

注:

      有使用迭代器类型的参数不限于string类型,可以为vector、list等其他类型迭代器。

 

 

 

 

 

 

          

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值