C++文本查询程序实例

本文档介绍如何使用C++实现一个文本查询程序,详细阐述了需求、解决思路及所用数据结构。通过创建TextQuery和QueryResult类,利用vector、istringstream、set和map等数据结构,实现对英文文本中单词查询的功能,展示单词出现次数及其所在行内容。
摘要由CSDN通过智能技术生成

需求介绍

假如有这样的需求:
处理一个英文文本(简单处理为无标点),用户输入一个单词:如you,
程序执行,显示you在文本文件中出现的次数,以及其所在行的内容。如果该单词在一行中出现多次,则此行只显示一次即可。查询结果按行号升序输出各行内容。

解决思路

利用C++实现这样一个简单的文本查询需求十分简单。
编写两个类
1)TextQuery
2)QueryResult

所用数据结构:

  1. 使用vector< string > 保存文本文件
  2. 用istringstream将每行分解为单词
  3. 使用set来保存单词在文本中出现的所有行号
  4. 使用map将每个单词与其出现所有行号的set进行映射
  5. 使用shared_ptr 进行对象内存共享

具体实现代码:

类定义 & 成员函数

最好分开文件实现(在此偷懒都写在一个头文件中)

#ifndef _TEXTQUERY_H
#define _TEXTQUERY_H

#include <string>
using std::string;

#include <vector>
using std::vector;

#include <map>
#include <set>

#include <memory>
using std::shared_ptr;

#include <iostream>
#include <fstream>
#include <sstream>
#include <algorithm>


using namespace std;

class QueryResult;

class TextQuery {
 public:
    using line_no = std::
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值