使用迭代器寻找和删除 string 对象中所有的大写字符。

2014-11-24 08:13:32 · 作者: · 浏览: 1
C++ Primer 习题9.35给出的答案如下:
[cpp]
#include
#include
#include
using namespace std;
int main()
{string str = "This IS A Example";
for(string::iterator iter = str.begin();
iter != str.end();++iter){
if(isupper(*iter)){
str.erase(iter);
--iter;
}
}
for(string::iterator iter = str.begin();
iter != str.end();++iter)
cout<<*iter<<" ";
return 0;
}
以上运行报错。
解:
由于第一个字母为T,--iter后
--iter--ite,,r则超出迭代范围了。
改成string str = "this is A exaMple";
如下,则可通过
[cpp]
#include
#include
#include
using namespace std;
int main()
{
string str = "this is A exaMple";
for(string::iterator iter = str.begin();
iter != str.end();++iter){
if(isupper(*iter)){
str.erase(iter);
--iter;
}
}
for(string::iterator iter = str.begin();
iter != str.end();++iter)
cout<<*iter<<" ";
return 0;
}