【发布时间】:2020-09-02 05:58:09
【问题描述】:
我正在尝试从字符串中截断开头的零,所以我使用了序列擦除功能
string& erase (size_t pos = 0, size_t len = npos);
这是我的实现:
string str="000010557";
for(char c:str){
cout<<c<<" "<<str<<" "<<"\n";// for debug purpose
if(c=='0')
str.erase(0,1);
else
break;
}
cout<<str;
我得到的输出字符串是0010557 而不是10557 并且调试语句打印:
0 000010557
0 00010557
1 0010557
我阅读了 erase 和 this 的文档后认为可能存在一些迭代器失效,但实施已接受答案中推荐的代码 sn-p 也给出了相同的输出,请帮助我了解问题出在哪里。
我是stl库函数的新手,如有疏忽请见谅,谢谢。
【问题讨论】: