C++实现简单的文本查询
1 该程序将读取用户指定的任意文本文件,然后允许用户从该文件中查找单词。查询的结果是该单词出现的次数,并列出每次出现所在的行。如果某单词在同一行中多次出现,程序将只显示该行一次,行号按升序显示。 2 3 以下是代码实现: 4 5 #include <ctype.h> 6 #include <iostream> 7 #include <string> 8 #include <map> 9 #include <set> 10 #include <vector> 11 #include <sstream> 12 #include <fstream> 13 #include <algorithm> 14 #include <iterator> 15 using std::cout; 16 using std::endl; 17 using std::map; 18 using std::set; 19 using std::vector; 20 using std::string; 21 using std::ifstream; 22 using std::ofstream; 23 using std::istringstream; 24 25 class Query 26 { 27 public: 28 void readFile(const string filename); 29 void query(const string & world); 30 31 private: 32 vector<string> _lines; 33 map<string,set<int>> word2line; 34 map<string,int> _wordFreq; 35 }; 36 37 void Query::readFile(const string filename) 38 { 39 ifstream ifs(filename); 40 if(!ifs.good()) 41 { 42 cout << "Oops!" << endl; 43 return; 44 } 45 string line; 46 int setnumber = 0; 47 while(getline(ifs,line)) 48 { 49 _lines.push_back(line); 50 ++setnumber; 51 istringstream iss(line); 52 string word; 53 while(iss >> word) 54 { 55 map<string,int>::iterator it = _wordFreq.begin(); 56 while(it != _wordFreq.end()) 57 { 58 if(word==it->first) 59 { 60 ++(it->second); 61 word2line[word].insert(setnumber); 62 break; 63 } 64 ++it; 65 } 66 if(it == _wordFreq.end()) 67 { 68 _wordFreq[word]=1; 69 word2line[word].insert(setnumber); 70 } 71 } 72 } 73 ifs.close(); 74 } 75 76 void Query::query(const string & word) 77 { 78 if(!_wordFreq[word]) 79 { 80 cout << "word:" << word << " --> Not found!" << endl; 81 } 82 else 83 { 84 cout << word << " occurs " << _wordFreq[word] << " times." << endl; 85 for(auto & elem : word2line[word]) 86 { 87 cout << " (line " << elem << ") " << _lines[elem-1] << endl; 88 } 89 } 90 } 91 92 int main(int argc,char *argv[]) 93 { 94 if(argc!=3) 95 { 96 cout << "Oops!" << endl; 97 return -1; 98 } 99 Query qur; 100 qur.readFile(argv[1]); 101 qur.query(argv[2]); 102 103 return 0; 104 }
转载于:https://www.cnblogs.com/m4ch0/p/7072005.html
C++实现简单的文本查询相关推荐
- C++ 容器的综合应用的一个简单实例——文本查询程序
[0. 需求] 最近在粗略学习<C++ Primer 4th>的容器内容,关联容器的章节末尾有个很不错的实例. 通过实现一个简单的文本查询程序,希望能够对C++的容器学习有更深的理解. 由 ...
- C++ primer 第12章 12.3 使用标准库:文本查询程序
文章目录 使用标准库:文本查询程序 文本查询程序设计 数据结构 在类之间共享数据 自己的文本查询程序 书中的文本查询程序 使用标准库:文本查询程序 我们将实现一个简单的文本查询程序,作为标准库相关内容 ...
- C++之文本查询系统
1. 整体需求 使用标准库实现一个简单的文本查询系统.允许用户在一个给定的文件中查询单词.查询结果是单词在文件中出现的次数以及所在行的列表.如果一个单词在一行中出现多次,该行也只列出一次,但是出现的次 ...
- android简单星座查询,简单的星座查询
简单的星座查询 1.引言 对于一个简单的星座查询的过程是为了熟悉时间控件Dateoicker的使用,并与java中初始化日历的Callendar类相结合来完成简单的星座的查询功能.2.程序代码 对于实 ...
- c++ primer--容器的综合应用:文本查询程序
c++ primer–容器的综合应用:文本查询程序 我们的程序将读取用户指定的任意文本文件,然后允许用户从该文件中查找单词.查询的结果是该单词出现的次数,并列出每次出现所在的行.如果某单词在同一行中多 ...
- 输入手机号查询信息C语言,简单个人电话号码查询系统.doc
课程设计任务书 2011-2012学年第1学期 电子与信息工程系 专业 班级 课程设计名称: 数据结构课程设计 设计题目: 简单个人电话号码查询系统 完成期限:自2012 年 1月2日至2012 年 ...
- Antlr4之简单的sql查询解析demo
当前版本:jdk1.8.antlr4.8 1. 声明 当前内容主要为测试和使用Antlr4,并设计简单的SQL查询解析(本人解析IoTDB源码中发现其中使用了Antlr4来实现对sql执行的解析) 1 ...
- 使用Flutter编写一个简单的天气查询App
使用Flutter编写一个简单的天气查询App Flutter项目目录分析 入口函数 home:主页面 编写天气应用 网络请求 数据解析 布局编写 Flutter里基础的Widget 上 中 下 Fl ...
- 用python做一个数据查询软件_Python实现功能简单的数据查询及可视化系统
欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. image.png 前言 数据时代,数据的多源集成 ...
最新文章
- 第十七届全国大学生智能汽车竞赛,我们来了
- UVa 11520 Fill the Square 填充正方形
- javascript中的this
- Java SE 6 新特性: Java DB 和 JDBC 4.0
- web 应用在线编辑器 glitch 简介
- gitee如何搭建mysql_Windows基于gitee使用hexo搭建个人博客笔记
- 移除apt源_apt提示处理归档 (--unpack)时出错的解决办法
- Nginx日志配置详解
- mysql alter event_MYSQL ALTER EVENT介绍
- html图标反色,Html5 反色 及其 透明 效果
- php is_subclass_of,PHP is_subclass_of函数的一个BUG和解决方法
- 解决OverflowError: int too large to convert to float的办法
- 最新一键修改手机MAC地址和路由器wifi物理地址
- 碳排放权交易管理办法即将施行,你知道火电厂的碳排放是怎么算出来的吗?
- 黑苹果10.15.7安装comfast永存,CF-811AC驱动方法
- 通过优启通制作U盘启动安装Windows系统
- 快速迭代内部学习心得
- 【opencv-python】寻找矩形框
- mssql2000 mysql,MYSQL 与MSSQL2000 在修改表字段的区别
- 第十篇:SpringBoot集成支付宝接口扫码支付
热门文章
- totoisegit不显示对勾_暗黑2画质不满意?教你简单安装高分辨率补丁
- 烟台大学计算机技术面试,2019烟台大学研究生复试面试注意哪些
- java获取动态天气api,java调用中国天气网api获得天气预报信息
- python模拟app抢票_亲测,手把手教你用Python抢票
- java打印堆栈信息linux,在C/C++程序里打印调用栈信息(转载)
- python睡眠_Python时间睡眠()
- kotlin_Kotlin阵列
- SQL Drop数据库– MySQL,PostgreSQL,SQL Server
- CentOS下通过yum安装svn及配置
- docker 安装portainer、gogs、redis、mongodb、es、rabbitmq、mysql、jenkins、harbor