#include <iostream>
#include <fstream>
#include <string> #include <map>
using namespace std; void main(void)
{
ifstream input("c:\\urce2.txt");
string str;
map<string,int> string_count ;
while(input>>str){ ++string_count[str];
}
map<string,int>::iterator it=string_count.begin(); // begin函数返回指向map头部的迭代器 cout<<"字符串"<<" "<<"出现次数"<<endl;
while(it!=string_count.end()){ //如果没有到map尾部的迭代器,就循环
cout<<it->first<<" "<<it->second<<endl;
it++;
} input.close();
}

c++中,提供了map头文件,他是一个STL 容器,它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点没什么影响。对于迭代器来说,可以修改实值,但不能修改key值;

map还有一个优点就是会将所有的关键字按照由小到大的顺序怕排列,而不用自己去排列。

这个程序是拷贝的同学的,真心觉得用map比较简单。但是有一个缺点就是识别出来的单词如果和标点符号相邻的话会出现错误,即出现和标点符号连在一起的情况。还有就是不会按照第二关键字排序。

程序思路:

1、读文件

2、使用map建立key-value的对应,这里key是str类型,建立一个数组map<string,int> string_count ;

3、如果输入流字符串与数组相同,则使得value加一

4、从头开始读出key和value。

值得注意的是用到了迭代(在程序设计里,经常用到这样的方法,同一个变量,用不同的数值来代替,从而使得表达式变得精简),就是替换了刚才那个程序中清空字符数组的操作,程序很简洁。

程序运行结果:

问题:

map能够实现按照value值来排序吗?怎么操作呢?

map可以用条件选择将标点符号去掉,使之只输出单词吗?

【软件工程】用map 实现把英语文本文件词和个数打印出来的更多相关文章

  1. 曲根英语万词---二、evoke

    曲根英语万词---二.evoke 一.总结 一句话总结:evoke v.唤起,引起 词根:-voc-, -vok- [词根含义]:声音,叫喊 1.consecrate? v,供奉,奉为神圣 -ate, ...

  2. 读取文本文件中的中文打印到Eclipse控制台为何显示问号

    原因:未将文本文件存为utf-8编码格式而是ascii编码格式.

  3. Java实现敏感词过滤

    敏感词.文字过滤是一个网站必不可少的功能,如何设计一个好的.高效的过滤算法是非常有必要的.前段时间我一个朋友(马上毕业,接触编程不久)要我帮他看一个文字过滤的东西,它说检索效率非常慢.我把它程序拿过来 ...

  4. Java实现敏感词过滤(转)

    敏感词.文字过滤是一个网站必不可少的功能,如何设计一个好的.高效的过滤算法是非常有必要的.前段时间我一个朋友(马上毕业,接触编程不久)要我帮他看一个文字过滤的东西,它说检索效率非常慢.我把它程序拿过来 ...

  5. jieba库与好玩的词云的学习与应用实现

    经过了一些学习与一些十分有意义的锻(zhe)炼(mo),我决定尝试一手新接触的python第三方库 ——jieba库! 这是一个极其优秀且强大的第三方库,可以对一个文本文件的所有内容进行识别,分词,甚 ...

  6. java实现文章敏感词过滤检测

    SensitivewordFilter.java import java.util.HashSet; import java.util.Iterator; import java.util.Map; ...

  7. Java实现敏感词过滤 - DFA算法

    Java实现DFA算法进行敏感词过滤 封装工具类如下: 使用前需对敏感词库进行初始化: SensitiveWordUtil.init(sensitiveWordSet); package cn.swf ...

  8. 深蓝词库转换2.2发布,支持手心输入法和Win10微软拼音

    距离上一次大版本的发布已经很久很久了,中间是不是会收到一些用户的来信,提出新的需求,于是只是做小版本的更新,终于积累了一些更新后,打算做个大版本的发布了. 深蓝词库转换是一个输入法的词库互转和生成软件 ...

  9. POJ 2503 单词映射(map)

    Sample Input dog ogdaycat atcaypig igpayfroot ootfrayloops oopslay atcayittenkayoopslaySample Output ...

随机推荐

  1. Python 利用pytesser模块识别图像文字

    使用的是python的pytesser模块,原先想做的是图片中文识别,搞了一段时间了,在中文的识别上还是有很多问题,这里做记录分享. pytesser,OCR in Python using the ...

  2. Sublime Text 快捷键及插件安装

    Sublime Text是一款跨平台的编辑器,它小巧绿色且速度非常快,支持各种流行编程语言的语法高亮.代码补全等,插件非常丰富!editplus.notepad++也都是不错的工具,体积轻巧,启动迅速 ...

  3. bootstrap-11

    下拉菜单(基本用法) 在使用Bootstrap框架的下拉菜单时,必须调用Bootstrap框架提供的bootstrap.js文件.当然,如果你使用的是未编译版本,在js文件夹下你能找到一个名为“dro ...

  4. oracle中的装换函数

    日期装换成字符的函数:TO_CHAR(date[,fmt[,params]]) 默认格式:DD-MON-RR 参数说明: date:将要装换的日期 fmt:装换的格式 params:日期的语言(可以不 ...

  5. Android——课堂整理:assets目录和手机外部存储

    layout文件: <Button android:layout_width="match_parent" android:layout_height="wrap_ ...

  6. Boot loader: Grub进阶[转]

    Boot loader: Grub进阶 本文记录grub的一些进阶配置 关於核心功能当中的 vga 配置 事实上,你的 tty1~tty6 除了 80x24 的解析度外,还能够有其他解析度的支持喔!但 ...

  7. Javascript操作Cookie的脚本 — CookieHelper

    var HttpCookie = function(name, value, expires, path, domain) { if (name) this.Name = name; if (valu ...

  8. Cellmap 基站查询 For Pc

    cellmap for pc 6.2.8.3.0.9 在线版本 更新日期:2017年1月5日 下载地址:<地址一> 主页:www.cellmap.cn 特别声明:本软件不能手机定位.谨防受 ...

  9. Linux下访问网站

    1.将打包的文件解压到/usr/local/tomcat7/webapps/ROOT下 2.将8080端口开启 3.通过浏览器访问,结果返回来的状态时Aborted,出现 严重: The web ap ...

  10. python学习-day14:集合,函数,格式化

    一.集合 定义:由不同元素组成的集合.集合是一组无序排列的可hash值, 可以作为字典的key.元素必须是不可变类型:只能存放数字,字符串,字典 特性:集合的目的是将不同的值放在一起,不同的集合之间可 ...