uva10815

/*这里有好几个小技巧,是看了刘汝佳的书后稍微改了一下,对于此题那几个简单函数代码中有注释,不再多说,主要是引用到了set这个东西 ,主要用set声明一个string类,
原因是set中insert时会自动排好,默认从小到大的顺序,且将重复的只出现一次的完美性质与这道题结合在了一起,小技巧在sstream>>buf那里自动将空格跳过*/
</pre><pre code_snippet_id="1887750" snippet_file_name="blog_20160919_4_1635702" name="code" class="cpp">#include <iostream>//isalpha 和 tolower 的头文件
#include <set>
#include <string>//getline的头文件
#include <sstream>

using namespace std;

set<string> dict;

int main(){

    string s, buf;
    while(getline(cin, s)){//getline可以保留空格比cin输入简单多了
        dict.clear();//这里对set要进行清空
        for(int i = 0; i < s.length(); i++){
            if(isalpha(s[i])) s[i] = tolower(s[i]);//isalpha 函数是判断字符是否为字母, tolower 函数是将大写字母改写为小写字母
            else s[i] = ' ';
        }
        stringstream ss(s);//这里是将s这个字符串写进ss
        while(ss >> buf) dict.insert(buf);//在循环输入的时候将空格字符自动跳过进行下一个直到字符串末尾
        for(set<string>::iterator it = dict.begin(); it != dict.end(); it++)
            cout<<*it<<endl;
    }
    return 0;

}




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值