身上无钱你莫邪

moye's c++ blog

C++ Primer习题:字符串动态修改练习

习题3.10 编一个程序,从string对象中去掉标点符号。要求输入程序的字符串必须含有标点符号,输出结果则是去掉标点符号后的string对象。

方法1,很笨,先判断string是否有标点,没有就循环。随后再做一个循环,滤掉标点符号,目的不出于这种不合理的做法,而是实验一下iterator对于动态增删改string字符成员的功能:

 

string s;
    
bool flag(true);

    
while(flag){
        cout
<<"\7请输入有标点符号的句子:"<<endl;
        getline(cin,s);
        
for(string::size_type i =0;i<s.size();i++){
            
if(ispunct(s[i])){
                flag 
= false;
                
break;
            }
        }
    }
    
for(string::iterator iter = s.begin();iter<s.end();iter++){
        
if(ispunct(*iter)){
            s.erase(iter);
        }        
    }

    cout
<<s<<endl;

办法2,合理的做法,在判断是否含有标点时,就将句子内容滤掉标点记录下来:

string s,res;
    
bool flag(true);

    
while(flag){
        cout
<<"\7请输入有标点符号的句子:"<<endl;
        res 
= "";
        getline(cin,s);
        
for(string::size_type i =0;i<s.size();i++){
            
if(ispunct(s[i]))
                flag 
= false;
            
else
                res
+=s[i];

        }
    }

    cout
<<res<<endl;

posted on 2009-02-26 17:24 莫耶 阅读(881) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

导航

<2009年2月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
1234567

统计

常用链接

留言簿(3)

随笔档案

友情链接

搜索

最新评论

阅读排行榜

评论排行榜