当前位置:编程学习 > C/C++ >>

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

C++ Primer  习题9.35给出的答案如下:
[cpp]  
#include<iostream>  
#include<cctype>  
#include<string>  
using namespace std;  
int main()  
{<span style="color:#ff0000;">string str = "This IS A  Example";  
</span> 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<iostream>  
#include<cctype>  
#include<string>  
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;  
}  
 
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,