函数原型
// erase 删除 从pos开始的n个字符
MyString& MyString::erase(size_t pos,size_t n)
{
if((pos+n)>strLength)
{
throw Outofbond();
}
char *p_old = p_str;
strLength -= n;
p_str = new char[strLength+1];
for(size_t i=0;i<pos;i++)
{
p_str[i] = p_old[i];
}
for(size_t i=pos;i<strLength;i++)
{
p_str[i] = p_old[i+n];
}
*(p_str+strLength) = '\0';
return *this;
}
用法一
erase(pos, n); 删除从第pos开始的第n个字符
#include<iostream>
using namespace std;
int main()
{
string str = "don't go gentle into the good night";
str.erase(0, 6);
cout << str;//go gentle into the good night
}
用法二
erase(pos);pos为迭代器,删除pos处的一个字符
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str = "don't go gentle into the good night";
string::iterator pos = str.begin() + 4;
str.erase(pos);
cout << str;//don' go gentle into the good night
}
用法三
erase(first, last); first和last都是迭代器,删除从first开始到last之间的字符
#include<string>
#include<iostream>
using namespace std;
int main()
{
string str = "don't go gentle into the good night";
str.erase(str.begin() + 8, str.end() - 20);
cout << str;//don't go into the good night
}

本文总结了C++中string对象的erase方法,包括三种用法:一是删除指定位置开始的n个字符;二是删除迭代器pos指向的单个字符;三是删除由两个迭代器界定的一段字符。
4万+

被折叠的 条评论
为什么被折叠?



