目录
insert:
原型:
string& insert ( size_t pos1, const string& str, size_t pos2, size_t n );
好吧,是不是看不明白,我们举例说明,一般insert有如下三个使用情况
情况一:
在指定位置it前“插入”值为val的元素,返回指向这个元素的迭代器,
int main()
{
string s("123456");
string::iterator it = s.begin();//it指向字符串的开头
s.insert(it,'9');//这句话的意思就是头插入一个字符’9’进入字符串内
cout << s << endl;
return 0;
}
结果如下:
情况二:
在指定位置it前“插入”num个值为val的元素
int main()
{
string s("123456");
string::iterator it = s.begin();//it指向开头
s.insert(it,10,'9');//在it这个开头处,插入10个,字符’9’
cout << s << endl;
return 0;
}
结果如下
情况三:
在指定位置it前“插入”区间[first, last)的所有元素.first,last,it都是迭代器
int main()
{
string s("123456");
string::iterator it = s.begin();//it指向s[0]处
string::iterator first = s.begin()+1;//从S[1]开始
string::iterator last = s.end() -1;//到s[4],也就是倒数第二个
s.insert(it,first,last);//就是在S[0]处添加S[1]-S[4]的所有字符
cout << s << endl;
return 0;
}
结果如下
erase:
也是三种用法
情况一:
删除从下标pos开始的n个字符
int main()
{
string s("123456");
s.erase(0,1);//删除从下标【0】开始的第一个字符,就是头删
cout << s << endl;
return 0;
}
结果如下
情况二:
删除postion处的一个字符,postion是迭代器
int main()
{
string s("123456");
string::iterator it = s.begin()+1;
s.erase(it);//这里it指向的是字符串的首字符+1,也就是第二个字符
cout << s << endl;
return 0;
}
结果如下:
情况三:
删除从first到last之间的字符(first和last都是迭代器)
int main()
{
string s("123456");
string::iterator first = s.begin()+1;//从第二个字符向后
string::iterator last = s.end() -1;//从倒数第二个字符向前
s.erase(first,last);
cout << s << endl;
return 0;
}
结果如下: