string模板类(补充③)

插入方法

string模板类提供了insert() 方法令string对象、字符串或者字符能够插入到string对象中去,这个方法与append() 类似,不过append()方法只能在string对象末尾追加字符串,但是insert()方法却可以指定插入的位置或者迭代器,数据将被插入到插入点之前,下面是原型:(pos1表示要插入的位置,pos2表示要插入的字符串的起始位置,如果他们中有的超过了对应字符串结尾,将引发out_of_range异常,如果得到的字符串长度大于最大长度,那么将引发length_error 异常。)

basic_string& insert(size_type pos1,const basic_string& str);
basic_string& insert(size_type pos1,const basic_string& str,
                     size_type pos2,size_type n);
basic_string& insert(size_type pos,const charT* s,size_type n);
basic_string& insert(size_type pos,const charT* s);
basic_string& insert(size_type pos,size_type n,charT c);
iterator insert(const_iterator p,charT c);
iterator insert(const_iterator p,size_type n,charT c);
template<class T>
    void insert(iterator p,T first,T last);//T为输入迭代器
iterator insert(const_iterator p,initializer_list<charT>);

清除方法

string模板类提供了清楚字符串特定区域字符的方法:erase()pop_back()

basic_string& erase(size_type pos=0,size_type n=npos);
//用于删除从pos开始的n个字符或者删除到字符串尾
iterator erase(const_iterator p);
//用于删除迭代器指向位置的字符
iterator erase(const_iterator first,const_iterator last);
//用于删除迭代器区间的字符
void pop_back();
//用于删除字符串最后一个字符

替换方法

basic_string &replace(size_type pos1, size_type n1, const basic_string &str);
//用str替换pos1位置开始的n1个字符
basic_string &replace(size_type pos1, size_type n1, const basic_string& 						str,size_type pos2, size_type n2);
//用str的pos2位置开始的n2个字符替换pos1位置开始的n1个字符
basic_string &replace(size_type pos, size_type n1, const charT *s,
                      size_type n2);
//用s的前n2个字符替换pos开始的n1个字符
basic_string &replace(size_type pos, size_type n1, const charT *s);
//用s换pos开始的n1个字符
bastc_string &replace(size_type pos, size_type n1, size_type n2, charT C);
//用n2个字符c替换pos开始的n1个字符
basic_string &replace(const_iterator i1, const_iterator i2,
                      const basic_string &str);
//用str替换迭代器区间[i1,i2)
basic_string &replace(const_iterator i1, cont_iterator i2,
                      const charT *s, size_type n);
//用s的前n个字符替换迭代器区间[i1,i2)
basic_string &replace(const_iterator i1, const_iterator i2,
                      const charT *s);
//用s替换迭代器区间[i1,i2)
basic_string &replace(const_iterator i1, const_iterator i2,
                      size_type n, charT c);
//用n个字符c替换迭代器区间[i1,i2)
template <c1ass InputIterator>
basic_string &replace(const_iterator i1, const_iterator i2,
                      InputIterator j1, InputIterator j2);
//用迭代器区间[j1,j2)替换迭代器区间[i1,i2)                   
basic_string &replace(const_iteraor i1, const_iteator i2,
                      initia1izer_list<charT> i1);
//用字符列表替换迭代器区间[i1,i2)

原型如上:

请注意,被替换的字符串和替换的字符串不是一个一个字符的替换,而是一个整体换为另一个整体,比如说,string对象str=“0123456789”,用string对象s=“abcdef” 进行替换,选择str的1位置开始的2个字符,用s的以2位置开始的4个字符,那么结果就是,str的"12"被替换为了"cdef",而str后面的字符不会被掩盖,整个字符串的长度发生了改变,其他的替换于此类似。

copy()swap()

copy() 方法可以将string对象的一部分复制到字符数组中:

size_type copy(charT *s,size_type n,size_type pos=0)const;

上面的原型表达的意思是从string对象的pos位置开始赋值n个字符到字符数组s,或者遇到了string对象的结尾,此函数返回复制的字符数,这种方法不追加空字符,同时没有安全保障,可能超过字符数组的下标。

swap() 方法交换两个string对象的内容:

void swap(basic_string& str);

这种方法使用一种时间恒定的算法。


版权声明:本文为weixin_67340472原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。