通过这个小程序,使我对map,set,fstream 类的使用有所熟悉.

程序摘自《essential c++》,我加了注释.

#include  < map >
#include  < set >
#include  < string >
#include  < iostream >
#include  < fstream >
using   namespace  std;

void  initialize_exclusion_set( set < string >& );     // 初始化set容器,把要排除在外的单词插入其中
void  process_file(map < string , int >& , const   set < string >& ,ifstream &  );     // 从input.txt文件中读取单词,若单  词未在 set容器中出现过,将其置为map容器中的关键字key,并使相应key的value自加1, 否则读取下一单词,以空格为分界符
void  user_query( const  map < string , int >& );     // 用户控制台,用户输入search_word,若在map中存在则打印key与相应value值
void  display_word_count( const  map < string , int >& ,ofstream & );     // 输出map中的所有key与其相应的value值于output.txt中

int  main()
... {
    ifstream ifile("G:/input.txt");
    ofstream ofile("G:/output.txt");

    if(!ifile||!ofile)
    ...{
        cerr << "Unable to open file!!! ";
        return -1;
    }

    set<string> exclude_set;
    initialize_exclusion_set(exclude_set);

    map<string,int> word_count;
    process_file(word_count,exclude_set,ifile);
    user_query(word_count);
    display_word_count(word_count,ofile);

    return 0;
}

void  initialize_exclusion_set( set < string >&  exs)
... {
    static string _exclude_words[5]=...{
        "the","a","and","an","are"
    };

    exs.insert(_exclude_words,_exclude_words+5);
}

void  process_file(map < string , int >&  word_count,
           const   set < string >&  exclude_set,ifstream &  ifile )
... {
    string word;
    while(ifile>>word)
    ...{
        if(exclude_set.count(word))
            continue;
        word_count[word]++;
    }
}

void  user_query( const  map < string , int >   & word_map)
... {
    string search_word;
    cout << "Please enter a word to search : q to quit ";
    cin>>search_word;
    while(search_word!="q")
    ...{
        map<string,int>::const_iterator it;
        if((it=word_map.find(search_word))!=word_map.end())
            cout << "Found! "<<it->first
                 << " occurs "<<it->second
                 << " times. ";
        else cout<<search_word
             <<" was not found in text. ";
        cout<<" Another search?(q to quit)";
        cin>>search_word;

    }
}

void  
display_word_count( const  map < string , int >   & word_map,ofstream &  os)
... {
    map<string,int>::const_iterator 
        iter=word_map.begin(),
        end_it=word_map.end();
    while(iter!=end_it)
    ...{
        os<<iter->first <<"("
          <<iter->second<<")"<<endl;
        ++iter;
    }

    os<<endl;

}


一个简陋的文字计数器相关推荐

  1. 构建一个可靠的分布式计数器--memcached之incr/decr操作实战分析

    2019独角兽企业重金招聘Python工程师标准>>> 最近的项目要依赖于一个分布式计数器的实现,因为公司使用memcached历史已久,所以就想到了使用memcached来作为计数 ...

  2. python界面显示图片更换背景_用python制作一个简陋的证件照换底色的桌面控制台应用...

    获取抠图API密钥 前往RemoveBg官网注册一个账号 注册账户界面已翻译,Api每月可用50次 注册成功后登录,按图示所选点击 点击 Get Api Key 获取Api密钥 安装所需支持库 imp ...

  3. application实现一个简单的网页计数器

    该篇文章首发于我的个人博客:http://cherryblog.site/ 使用github+coding+hexo搭建的静态博客,更多文章请移步至我的个人博客 application(应用对象):存 ...

  4. 学习记录贴:上班摸鱼做一个看lol文字直播的小工具

    学习记录贴:上班摸鱼做一个看lol文字直播的小工具 前言 运行图 流程及思路 项目及代码 总结 前言 本人纯新手小白,上班练手. 致谢: 基于Python命令行的NBA文字直播小工具. 运行图 流程及 ...

  5. 分享一个日文图片文字识别在线的方法

    对于一些从事贸易的朋友,尤其是一些从事国际贸易的朋友,往往需要整理很多外语资料.最近就有个小伙伴说他刚从事与一些日本企业合作,刚开始每天都需要整理大量的日文信息,但人工整理效率太低,但是如果有可以识别 ...

  6. html特效 wpf,利用WPF实现一个简单的文字粒子闪烁动画特效

    利用WPF实现一个简单的文字粒子闪烁动画特效 发布时间:2020-11-06 16:04:19 来源:亿速云 阅读:124 作者:Leah 本篇文章给大家分享的是有关利用WPF实现一个简单的文字粒子闪 ...

  7. 数字逻辑练习题(十一)利用74LS161设计一个七进制计数器

    一.题目描述 已知74LS161为同步四位二进制加法计数器,其逻辑符号和功能表如下,请利用74LS161设计一个七进制计数器.应写出分析设计过程. 二.问题解答 (1)分析 采用同步置数法进行设计:

  8. 一个简单的网页计数器

    今天写了一个最简单的 计数器,实现的功能很简单,可以记录总访问数及今日访问数.代码如下: 复制   保存 // ******************************************** ...

  9. ug建模文本怎么竖着_UG三维建模一个文字模型,换个角度竟然是一个新的文字!...

    原标题:UG三维建模一个文字模型,换个角度竟然是一个新的文字! 上次我们绘制了一个NX模型,就是换个视角还是NX这个文字模型,今天我们就来绘制一个yes or no 视觉体,从一个角度看是一个NO,但 ...

最新文章

  1. 为什么人工智能被过度炒作?
  2. mysql四个对勾_Mysql like查询语句中,结果包含反斜杠 \ 字符的,需要替换成四个反斜杠 \\\\...
  3. halcon知识:【1】二维码原理
  4. 备战5月软考--软件设计师
  5. 小心,信用卡销卡后,竟然变成黑名单!
  6. sketch浮动布局_使用智能布局和调整大小在Sketch中创建更好的可重用符号
  7. 删除CentOS系统自带的jdk
  8. Linux 命令 su 和 sudo 的区别?
  9. 字符串的操作,计算,拼接
  10. 《Java 多线程编程核心技术》- 笔记
  11. word批量设置图片大小和对齐,使用宏定义
  12. gtp怎么安装系统_UEFI+GTP模式下使用GHO文件安装Win8系统的具体操作方法
  13. 注册表去掉多余的安全删除硬件图标
  14. MSSQLSERVER 2019修改数据库文件存放路径的简单实现
  15. 卫片图斑_整治“卫片图斑”,让违建无处可逃!
  16. 算法竞赛入门经典(第2版)—第五章(C++与STL入门)
  17. Vue2.x动态添加路由实现
  18. 面渣逆袭:Spring三十五问,四万字+五十图详解
  19. 中谷教育Python26~29笔记——正则表达式
  20. 计算机毕业设计springboot爱宠医院管理系统

热门文章

  1. 关于立创EDA使用的几点心得
  2. 【DELL】戴尔笔记本PE下没有硬盘解决方法
  3. 如何利用微信红包来给公众号涨粉丝
  4. 自定义函数求解一元二次方程(C语言)
  5. linux-3 ftp,用Linux架设FTP服务器(3)
  6. Springboot-声明式事务
  7. MySQL退出命令行
  8. 银河麒麟V10部署iServer
  9. SSM项目无效的列类型问题的解决
  10. 户外听歌小音库,舒适不伤耳,Sanag A11S Pro秘境寒鸦气传导耳机体验