C++中replace()?函數(shù)的基本用法
replace算法:
replace函數(shù)包含于頭文件#include<string>中。
泛型算法replace把隊(duì)列中與給定值相等的所有值替換為另一個(gè)值,整個(gè)隊(duì)列都被掃描,即此算法的各個(gè)版本都在
線性時(shí)間內(nèi)執(zhí)行———其復(fù)雜度為O(n)。
即replace的執(zhí)行要遍歷由區(qū)間[frist,last)限定的整個(gè)隊(duì)列,以把old_value替換成new_value。
下面說下replace()的九種用法:(編譯軟件dev5.4.0)
用法一:用str替換指定字符串從起始位置pos開始長度為len的字符
string&?replace?(size_t?pos,?size_t?len,?const?string&?str);?
代碼如下:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str = "he is@ a@ good boy";
str=str.replace(str.find("a"),2,"#"); //從第一個(gè)a位置開始的兩個(gè)字符替換成#
cout<<str<<endl;
return 0;
}
結(jié)果如下:

用法二:?用str替換?迭代器起始位置?和?結(jié)束位置?的字符
string&?replace?(const_iterator?i1,?const_iterator?i2,?const?string&?str);
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str = "he is@ a@ good boy";
str=str.replace(str.begin(),str.begin()+5,"#"); //用#替換從begin位置開始的5個(gè)字符
cout<<str<<endl;
return 0;
}
結(jié)果如下:

用法三:?用substr的指定子串(給定起始位置和長度)替換從指定位置上的字符串?
string&?replace?(size_t?pos,?size_t?len,?const?string&?str,?size_t?subpos,?size_t?sublen);
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str = "he is@ a@ good boy";
str=str.replace(str.begin(),str.begin()+5,"#"); //用#替換從begin位置開始的5個(gè)字符
cout<<str<<endl;
return 0;
}
結(jié)果如下:

用法四:string轉(zhuǎn)char*時(shí)編譯器可能會(huì)報(bào)出警告,不建議這樣做
用str替換從指定位置0開始長度為5的字符串? ? ? ? ? ? ? ?
string&?replace(size_t?pos,?size_t?len,?const?char*?s);
代碼如下:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str = "he is@ a@ good boy";
char * str1 = "12345";
str=str.replace(0,5,str1); //用str替換從指定位置開始長度為5的字符串
cout<<str<<endl;
return 0;
}
結(jié)果如下:

用法五:string轉(zhuǎn)char*時(shí)編譯器可能會(huì)報(bào)出警告,不建議這樣做
用str替換從指定迭代器位置的字符串? ? ? ? ? ? ? ?
string&?replace?(const_iterator?i1,?const_iterator?i2,?const?char*?s);?
代碼如下:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str = "he is@ a@ good boy";
char * str1 = "12345";
str=str.replace(str.begin(),str.begin()+6,str1); //用str替換從指定迭代器位置的字符串
cout<<str<<endl;
return 0;
}
結(jié)果如下:

用法六:string轉(zhuǎn)char*時(shí)編譯器可能會(huì)報(bào)出警告,不建議這樣做
用s的前n個(gè)字符替換從開始位置pos長度為len的字符串? ? ? ? ? ? ? ? ?
string&?replace(size_t?pos,?size_t?len,?const?char*?s,?size_t?n);??
代碼如下:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str = "he is@ a@ good boy";
char * str1 = "12345";
str=str.replace(0,6,str1,4); //用str1的前4個(gè)字符串替換從位置0~6的字符串
cout<<str<<endl;
return 0;
}
結(jié)果如下:
![]()
用法七:string轉(zhuǎn)char*時(shí)編譯器可能會(huì)報(bào)出警告,不建議這樣做
用s的前n個(gè)字符替換指定迭代器位置(從i1到i2)的字符串
?string&?replace?(const_iterator?i1,?const_iterator?i2,?const?char*?s,?size_t?n);?
代碼如下:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str = "he is@ a@ good boy";
char * str1 = "12345";
str = str.replace(str.begin(),str.begin()+6,str1,4); //用str1的前4個(gè)字符串替換從位置0~6的字符串
cout<<str<<endl;
return 0;
}
結(jié)果如下:
![]()
用法八:?用重復(fù)n次的c字符替換從指定位置pos長度為len的內(nèi)容
string&?replace?(size_t?pos,?size_t?len,?size_t?n,?char?c);?
代碼如下:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str = "he is@ a@ good boy";
char str1 = '#';
str = str.replace(0,6,3,str1); //用重復(fù)3次的str1字符替換的替換從位置0~6的字符串
cout<<str<<endl;
return 0;
}
結(jié)果如下:
![]()
用法九:?用重復(fù)n次的c字符替換從指定迭代器位置(從i1開始到結(jié)束)的內(nèi)容?
string&?replace?(const_iterator?i1,?const_iterator?i2,?size_t?n,?char?c);?
代碼如下:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str = "he is@ a@ good boy";
char str1 = '#';
str = str.replace(str.begin(),str.begin()+6,3,str1); //用重復(fù)3次的str1字符替換的替換從指定迭代器位置的內(nèi)容
cout<<str<<endl;
return 0;
}
結(jié)果如下:
![]()
總結(jié)
到此這篇關(guān)于C++中replace()函數(shù)基本用法的文章就介紹到這了,更多相關(guān)C++?replace()?函數(shù)用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言對(duì)堆排序一個(gè)算法思路和實(shí)現(xiàn)代碼
這篇文章主要介紹了C語言對(duì)堆排序一個(gè)算法思路和實(shí)現(xiàn)代碼,堆排序是一種樹形選擇排序,是對(duì)直接選擇排序的有效改進(jìn),需要的朋友可以參考下2014-06-06
Qt實(shí)現(xiàn)帶字?jǐn)?shù)限制的文字輸入框
這篇文章介紹了Qt實(shí)現(xiàn)帶字?jǐn)?shù)限制文字輸入框的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
Matlab實(shí)現(xiàn)貪吃蛇小游戲的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Matlab實(shí)現(xiàn)貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03

