string的erase()有关问题

string的erase()问题#includeiostreamusing namespace stdvoid main(){string s1(12345)string::ite

string的erase()问题
#include<iostream>
using namespace std;
void main()
{
string s1("12345");
  string::iterator it;
for(it = s1.begin(); it != s1.end();)
{
s1.erase(it++);
}
}

我想删除全部的内容 为什么会崩掉?

[解决办法]
for(it = s1.begin(); it != s1.end();)
{
s1.erase(it++); // 删除后后面的应该会向前移,string.earse不会再重新分配内存,所以后面的字符直接前移
}

// 这样可以:
for(it = s1.begin(); it != s1.end();)
{
it = s1.erase(it);
}