首页 > 其他 > 详细

uva10815安迪的第一个字典

时间:2015-02-06 16:49:51      阅读:205      评论:0      收藏:0      [点我收藏+]

背景:这种题,我只能说,原谅我是新手,一点不会,于是又只有照着书上打出来。

学习:c++里面set的一些基本用法。还有isalpha()函数和tolower()函数,isalpha()函数相当于isupper()||islower()的作用,为判断一个字符是否为英文字符,tolower()为将一个字符转变成小写字符,与之相反的为tosupper()函数。代码中的set<string>::iterator中的iterator是迭代器的意思,是STL中的重要概炼,类似于指针。

注:set和stringstream的学习可以参照我转载的两篇文章,在c++分类里面。

#include <iostream>
#include <string>
#include <set>
#include <sstream>
using namespace std;
set<string> dict;
int main()
{
    string s,buf;
    while(cin>>s)//C++输入流如果遇见eof会返回false,cin遇到空格,TAB,回车都结束读取,并且回车符被消耗。
    {
        for(int i=0;i<s.length();i++)
        {
            if(isalpha(s[i])) s[i]=tolower(s[i]);
            else s[i]=' ';//将标点符号转换为空格,作为单词的分界点。
        }
        stringstream ss(s);
        while(ss>>buf) dict.insert(buf);//从流里导出标准的string类,加入集合中,集合会自动取消重复,并升序排列
    }
    for(set<string>::iterator it=dict.begin();it!=dict.end();++it)
        cout << *it<< endl;//输出集合中的每个元素
    return 0;
}


uva10815安迪的第一个字典

原文:http://blog.csdn.net/qiweigo/article/details/43564821

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!