C++ string字符串的修改与替换方法详析
字符串内容的变化包括修改和替换两种。本节将分别讲解字符串内容的修改和字符串内容的替换。
字符串内容的修改
可以通过使用多个函数修改字符串的值。例如assign(),operator=,erase(),交换(swap),插入(insert)等。另外,还可通过append()函数添加字符。
下面逐一介绍各成员函数的使用方法。
assign()函数
使用assign()函数可以直接给字符串赋值。该函数既可以将整个字符串赋值给新串,也可以将字符串的子串赋值给新串。其在basic_string中的原型为:
basic_string&assign(constE*s);//直接使用字符串赋值 basic_string&assign(constE*s,size_typen); basic_string&assign(constbasic_string&str,size_typepos,size_typen); //将str的子串赋值给调用串 basic_string&assign(constbasic_string&str);//使用字符串的“引用”賦值 basic_string&assign(size_typen,Ec);//使用n个重复字符賦值 basic_string&assign(const_iteratorfirst,const_iteratorlast);//使用迭代器赋值
以上几种方法在例1中均有所体现。请读者参考下述代码。
【例1】
#include#include usingnamespacestd; intmain() { stringstr1("123456"); stringstr; str.assign(str1);//直接赋值 cout< operator=函数
operator=的功能就是赋值。
erase()函数
erase()函数的原型为:
iteratorerase(iteratorfirst,iteratorlast); iteratorerase(iteratorit); basic_string&erase(size_typep0=0,size_typen=npos);erase()函数的使用方法为:
str.erase(str*begin(),str.end()); 或str.erase(3);swap()函数
swap()函数的原型为:
voidswap(basic_string&str);swap()函数的使用方法为:
stringstr2("abcdefghijklmn"); str.swap(str2);insert()函数
insert()函数的原型为:
basic_string&insert(size_typep0,constE*s);//插人1个字符至字符串s前面 basic_string&insert(size_typep0,constE*s,size_typen);//将s的前3个字符插入p0位置 basic_string&insert(size_typep0,constbasic_string&str); basic_string&insert(size_typep0,constbasic_string&str,size_typepos,size_typen);//选取str的子串 basic_string&insert(size_typep0,size_typen,Ec);//在下标p0位置插入n个字符c iteratorinsert(iteratorit,Ec);//在it位置插入字符c voidinsert(iteratorit,const_iteratorfirst,const_iteratorlast);//在字符串前插入字符 voidinsert(iteratorit,size_typen,Ec);//在it位置重复插入n个字符cinsert()函数的使用方法为:
stringA("ello"); stringB; B.insert(1,A); cout<append函数
append()函数的原型为:
basic_string&append(constE*s);//在原始字符串后面追加字符串s basic_string&append(constE*s,size_typen);//在原始字符串后面追加字符串s的前n个字符 basic_string&append(constbasic_string&str,size_typepos,size_typen);//在原始字符串后面追加字符串s的子串s[pos,…,pos+n-1] basic_string&append(constbasic_string&str); basic_string&append(size_typen,Ec);//追加n个重复字符 basic_string&append(const_iteratorfirst,const_iteratorlast);//使用迭代器追加 append()函数的使用方法为: A="ello"; cout<下面通过一个完整的例子介绍这些函数的使用:
#include#include usingnamespacestd; intmain() { stringstr1("123456"); stringstr2("abcdefghijklmn"); stringstr; str.assign(str1); cout< 程序运行结果:
123456
456
3456
XXXXX
12345
123456
123
::
abcdefghijklmn
Hello
插入:Hyan
插入:Hlo
插入:HCCCCC
插入:Hello
A=ello,B=H
追加:Hello
A=ello,B=H
追加:H12
A=ello,B=H
追加:H345
A=ello,B=H
追加:Haaaaaaaaaa
A=ello,B=H
追加:Hello字符串内容的替换
如果在一个字符串中标识出具体位置,便可以通过下标操作修改指定位置字符的值,或者替换某个子串。完成此项操作需要使用string类的成员函数replace()。
replace()函数的原型如下: basic_string&replace(size_typep0,size_typen0,constE*s);//使用字符串s中的n个字符,从源串的位置P0处开始替换 basic_string&replace(size_typep0,size_typen0,constE*s,size_typen);//使用字符串s中的n个字符,从源串的位置P0处开始替换1个字符 basic_string&replace(size_typep0,size_typen0,constbasic_string&str);//使用字符串s中的n个字符,从源串的位置P0处开始替换 basic_string&replace(size_typep0,size_typen0,constbasic_string&str,size_typepos,size_typen);//使用串str的子串str[pos,pos+n-1]替换源串中的内容,从位置p0处开始替换,替换字符n0个 basic_string&replace(size_typep0,size_typen0,size_typen,Ec);//使用n个字符'c'替换源串中位置p0处开始的n0个字符 basic_string&replace(iteratorfirst0,iteratorlast0,constE*s);//使用迭代器替换,和1)用法类似 basic_string&replace(iteratorfirst0,iteratorlast0,constE*s,size_typen);//和2)类似 basic_string&replace(iteratorfirst0,iteratorlast0,constbasic_string&str);//和3)类似 basic_string&replace(iteratorfirst0,iteratorlast0,size_typen,Ec);//和5)类似 basic_string&replace(iteratorfirst0,iteratorlast0,const_iteratorfirst,const_iteratorlast);//使用迭代器替换该函数的使用方法参照下面的程序:
#include#include usingnamespacestd; intmain() { stringvar("abcdefghijklmn"); conststringdest("1234"); stringdest2("567891234"); var.replace(3,3,dest); cout<<"1:"< 程序执行结果为:
1:abc1234ghijklmn
2:abc234efghijklmn
3:abcxxxxxefghijklmn
4:1234
5:67891234efghijklmn
6:abc1234efghijklmn本节讲述了诸多可进行字符串内容的修改和替换的函数及其使用方法,并给出了例题。由于每个函数可能有多个原型,希望读者根据自己的情况,掌握其中的一种或两种,以满足自己使用的需要。同时,希望读者能够对照例题的执行效果,认真阅读本章节中的源代码,彻底掌握本节内容。
到此这篇关于C++string字符串的修改与替换方法的文章就介绍到这了,更多相关C++string字符串修改与替换内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!