请教!关于erase函数的问题~!
1)对String使用erase函数
cin>>str;
string::iterator strIt = str.begin();
while(strIt != str.end())
{
if(*strIt == 'A')
strIt = str.erase(strIt);
}
目的:想在str字符串里面删除所有A字符,为什么会在while语句里面出现死循环。
如果用下面方式实现就可以:
string::iterator temp;
for(unsigned int is = 0; is < str.size(); is++)
{
temp = find(str.begin(), str.end(), 'A');
if(temp != str.end())
{
str.erase(temp);
}
}
请教一下大家,谢谢~!
cin>>str;
string::iterator strIt = str.begin();
while(strIt != str.end())
{
if(*strIt == 'A')
strIt = str.erase(strIt);
}
目的:想在str字符串里面删除所有A字符,为什么会在while语句里面出现死循环。
如果用下面方式实现就可以:
string::iterator temp;
for(unsigned int is = 0; is < str.size(); is++)
{
temp = find(str.begin(), str.end(), 'A');
if(temp != str.end())
{
str.erase(temp);
}
}
请教一下大家,谢谢~!
...全文
相关推荐
基于C++ list中erase与remove函数的使用详解
本篇文章是对C++ list中erase与remove函数的使用进行了详细的分析介绍,需要的朋友参考下
vector与map的erase()函数详细解析
vector和map都不能将it++写在for循环中,而在循环体内erase(it)
C++string中的assign()、erase()、swap()函数
C++string中的assign()、erase()、swap()函数 代码实在,如下: #include using namespace std; int main() { string str=hello; cout<<str.erase(1)<<endl;//没有第二个参数,默认删除原串下标为1的字符及其后面的所有字符 string str1=hello; cout<<str1.erase(1,3)<<endl;//删除原串下标为1开始数的3个字符 string s1=hello; string s2=hahaha;
vector中删除元素erase的用法
erase的用法删除vector中特定的元素。非常简单实用。
关于STL的erase()陷阱-迭代器失效问题的总结
下面小编就为大家带来一篇关于STL的erase()陷阱-迭代器失效问题的总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧


