【软件工程】用map 实现把英语文本文件词和个数打印出来
#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 实现把英语文本文件词和个数打印出来的更多相关文章
- 曲根英语万词---二、evoke
曲根英语万词---二.evoke 一.总结 一句话总结:evoke v.唤起,引起 词根:-voc-, -vok- [词根含义]:声音,叫喊 1.consecrate? v,供奉,奉为神圣 -ate, ...
- 读取文本文件中的中文打印到Eclipse控制台为何显示问号
原因:未将文本文件存为utf-8编码格式而是ascii编码格式.
- Java实现敏感词过滤
敏感词.文字过滤是一个网站必不可少的功能,如何设计一个好的.高效的过滤算法是非常有必要的.前段时间我一个朋友(马上毕业,接触编程不久)要我帮他看一个文字过滤的东西,它说检索效率非常慢.我把它程序拿过来 ...
- Java实现敏感词过滤(转)
敏感词.文字过滤是一个网站必不可少的功能,如何设计一个好的.高效的过滤算法是非常有必要的.前段时间我一个朋友(马上毕业,接触编程不久)要我帮他看一个文字过滤的东西,它说检索效率非常慢.我把它程序拿过来 ...
- jieba库与好玩的词云的学习与应用实现
经过了一些学习与一些十分有意义的锻(zhe)炼(mo),我决定尝试一手新接触的python第三方库 ——jieba库! 这是一个极其优秀且强大的第三方库,可以对一个文本文件的所有内容进行识别,分词,甚 ...
- java实现文章敏感词过滤检测
SensitivewordFilter.java import java.util.HashSet; import java.util.Iterator; import java.util.Map; ...
- Java实现敏感词过滤 - DFA算法
Java实现DFA算法进行敏感词过滤 封装工具类如下: 使用前需对敏感词库进行初始化: SensitiveWordUtil.init(sensitiveWordSet); package cn.swf ...
- 深蓝词库转换2.2发布,支持手心输入法和Win10微软拼音
距离上一次大版本的发布已经很久很久了,中间是不是会收到一些用户的来信,提出新的需求,于是只是做小版本的更新,终于积累了一些更新后,打算做个大版本的发布了. 深蓝词库转换是一个输入法的词库互转和生成软件 ...
- POJ 2503 单词映射(map)
Sample Input dog ogdaycat atcaypig igpayfroot ootfrayloops oopslay atcayittenkayoopslaySample Output ...
随机推荐
- Node.js高级编程读书笔记 - 5 数据库 - Never
Outline 6 连接数据库 6.1 使用node-mysql连接MySQL数据库 6.2 使用Nano连接CouchDB数据库 6.3 使用Mongoose连接MongoDB数据库 6 连接数据库 ...
- LintCode Balanced Binary Tree
Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...
- CentOS 6.6 中中文输入法设置
排版比较乱你,参见 https://www.zybuluo.com/Jpz/note/144597 Linux开发环境配置 安装完系统之后,我们需要设置中文输入法,中文输入法是系统自带的,设置步骤如下 ...
- CE选择目录对话框(转)
本文转载于http://blog.163.com/zhaojun_xf/blog/static/30050580201132221118479/ 在Wince下要打开目录对话框需要调用函数SHBrow ...
- 在Bootstrap中 强调相关的类
.text-muted:提示,使用浅灰色(#999) .text-primary:主要,使用蓝色(#428bca) .text-success:成功,使用浅绿色(#3c763d) .text-info ...
- JavaSE配置文件java.util.Properties【单例模式Singleton】
如果不是放在src文件夹里面,则: p.load(new BufferedInputStream(new FileInputStream("tank.properties"))); ...
- [NOIP2011] 计算系数(二项式定理)
题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别为 a ,b ,k , ...
- ASP.NET Razor——Razor 简介
ASP.NET Razor - 标记 Razor 不是一种编程语言.它是服务器端的标记语言. 什么是 Razor? Razor 是一种标记语法,可以让您将基于服务器的代码(Visual Basic 和 ...
- Asm.Def点大兵
syzoj上的题,收货很多,orz天天学长 原题: Asm.Def奉命组建一支m人的特种作战小队前往圣迭戈.他有n名候选人,可以在其中任意挑选.由于小队中每个人都有独特的作用,所以次序不同的两种选法被 ...
- Python之paramiko基础
一.Paramiko模块 paramiko是一个自由和开放源码模块使用,实现SSH2协议安全(认证和加密)连接到远程计算机. 二.windwos下安装paramiko模块 #在DOS命令行执行如下命令 ...