c++的string库函数中有一个erase函数,基本用法如下:
c.erase(p )----------------------------从c中删除迭代器p指定的元素,p必须指向c中的一个具体元素,不能等于c.end() ,因为c.end()指向字符串最后一个元素的下一个
c.erase(b,e)----------------------------从c中删除迭代器对b和e所表示的范围中的元素,返回e
下面是代码应用
#include <bits/stdc++.h>
using namespace std;
string a,b;
int main()
{
getline(cin,a); //读入原字符串
getline(cin,b); //读入需要被删除的一些字符
string::iterator it;
for(int i = 0;i<b.length();i++)
{
for (it = a.begin(); it < a.end(); it++)
{
if (*it == b[i])
{
a.erase(it);
it--; /* 因为it迭代器指向的字符被删除后会自动前移,
所以此处需要it--,以免for循环中的it++跳过某个字符*/
}
}
}
for(int i = 0;i<a.size();i++) //输出删除后的字符
cout << a[i];
return 0;
}