uva10815安迪的第一个字典

本文介绍了一段使用C++处理文本并提取单词的代码示例,主要讲解了set和stringstream的基本用法,包括如何利用set进行单词的去重与排序,以及使用stringstream解析字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

学习: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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值