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);
}