#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. 关于 Unix 用户权限及进程权限及 Saved set-user-id

    最近在看APUE,看到3.14节,fcntl的时候#include <fcntl.h>int fcntl(int fd, int cmd, .../* int arg */);出错返回-1 ...

  2. pod install报错问题解决

    pod installwarning: Insecure world writable dir /usr/local/bin in PATH, mode 040777报错后就不进行了.查stackov ...

  3. Oracle建表添加数据

  4. ✡ leetcode 168. Excel Sheet Column Title 26进制数字 --------- java

    Given a positive integer, return its corresponding column title as appear in an Excel sheet. For exa ...

  5. JavaScript中“typeof”运算符与“instanceof”运算符的差异

    在JavaScript中,运算符“typeof”和“instanceof”都可以用来判断数据的类型,那么这两个运算符有什么不同之处呢? 差异一:使用方式不同. 最明显的差异就是这两个运算符的使用方式了 ...

  6. Yahoo Pure 中文参考手册

    Pure 是来自雅虎的 CSS 框架,使用 Normalize.CSS 无需任何 JavaScript 代码.框架基于响应式设计,提供多种样式的组件,包括表格.表单.按钮.表.导航等.标识使用非常简单 ...

  7. 一个简单的Lua解释器

    #include "stdafx.h" #include<stdarg.h> #include<stdlib.h> #include<stdio.h& ...

  8. HTML5 history新特性pushState、replaceState,popstate

    http://blog.csdn.net/tianyitianyi1/article/details/7426606 https://developer.mozilla.org/zh-CN/docs/ ...

  9. Android-Cdma手机定位

    对于Android CDMA手机获取当前位置,其实有更便利的办法,就是哄骗CdmaCellLocation.getBaseStationLatitude(),然则getBaseStationLatit ...

  10. Flume1.5.0的安装、部署、简单应用(含伪分布式、与hadoop2.2.0、hbase0.96的案例)

    目录: 一.什么是Flume? 1)flume的特点 2)flume的可靠性 3)flume的可恢复性 4)flume 的 一些核心概念 二.flume的官方网站在哪里? 三.在哪里下载? 四.如何安 ...