C++ String 的erase、remove和pop_back删除方法
一. erase()删除
erase 方法原型:
1. basic_string & erase(size_type pos=0, size_type n=npos);
即erase(pos,n);从给定起始位置pos
处开始删除, 删除n个字符, 返回值修改后的string对象引用。比如erase(0,1)就是删除第一个字符。
2. iterator erase(const_iterator position)
即erase(positon),删除迭代器位置处的单个字符(position是个string类型的迭代器), 并返回下个元素的迭代器。
如果position 不是迭代器位置,则删除该位置及之后的所有字符。
3. iterator erase(const_iterator first, const_iterator last)
即erase(first,last);删除迭代器(first, last)区间的所有字符(first和last都是迭代器),返回一个指向被删除的最后一个元素的下一个字符的迭代器.
#include<iostream>
#include<string>
using namespace std;
int main() {
string str = "hello the world!";
string str1 = "hello the world!";
string str2 = "hello the world!";
string str3 = "hello the world!";
string str4 = "hello the world!";
/****************第1种用法:earse(pos,n)**************************/
str.erase(6, 2);
cout << "<" << str << ">" << endl; // <hello e world!>
/****************第2种用法:earse(position)***********************/
str1.erase(8); //如果pos不是迭代器位置,则删除该位置及之后的所有字符
cout << "<" << str1 << ">" << endl; // <hello th>
str2.erase(str2.begin()); //如果pos是迭代器,则
cout << "<" << str2 << ">" << endl; // <ello the world!>
/****************第3种用法:earse(fist,last)**********************/
str3.erase(str3.begin() + 3, str3.end()-3);
cout << "<" << str3 << ">" << endl; // <helld!>
str4.erase(str4.begin() + 3, str4.end());
cout << "<" << str4 << ">" << endl; // <hel>
system("pause");
return 0;
}
结果如下所示:
erase()函数的应用:删除指定字符。
示例:想要删除时间戳里的‘.’ ,只留下数字。
//通过find找到需要删除的字符/字符串的位置:
string str;
string target;
int pos = str.find(target);
//然后通过erase进行删除:
n = target.size();
str = str.erase(pos,n); //从pos这个位置开始,删除n个字符
二. remove()删除
功能:remove是删除和指定元素值相同的所有元素,但删除掉的元素会被其他元素代替(remove需要和erase搭配使用才能完整的删除)。
remove函数实际上并未将元素完全删除,因为容器的大小未发生改变,只是将所有被删除的元素用下一个未被删除的元素覆盖掉,同时返回一个迭代器。在该迭代器之前的所有元素,保留原容器的顺序,并且不存在被删除的元素,而该迭代器到容器的末尾则不变。
即原容器的大小不变,被删除的元素删掉了,但容器末尾的一些元素(个数等于被删除元素个数)又会多出来一份。所以说remove需要和erase搭配使用才能实现完整的删除功能,彻底删除掉想删除的元素,并改变容器大小。
vector<int> vec = { 1,1,1,3,4,5,6,7,8};
vec.erase(remove(vec.begin(), vec.end(), 1), vec.end());
三、pop_back() 删除元素
使用pop_back()删除string中的元素,但其只能删除string的最后一个元素。
更多推荐
所有评论(0)