c++ primer书中有一个文本查询程序,涉及到了智能指针,操作符重载,类的继承和组合,字符串处理等知识,是个很好的demo。本文就分析下这个demo。
初始版本
设计一个文本查询程序,输入一个文本,以及一个单词,能够输出这个单词所在文本的行数,同时升序打印这一行的内容。如下所示:
首先定义数据结构
- 需要一个vector
来存放整个文本从文件中解析到的内容 - 需要一个map
>来存放每个单词所在的行数
然后定义类
- 定义一个TextQuery类,用来解析文本,同时保存文本的详细信息
- 当查询时,返回查询的结构数据,用类QueryResult来保存
进阶版本
上面的初始版本只是适合查询单个单词,如果我们想查询多个单词,加上与或非的逻辑语句呢?当前的代码就不合适了,