#include <iostream> #include <vector> #include <set> #include <map> #include <fstream> #include <sstream> #include <string> using namespace std; int main() { ifstream in; in.open("C:\\Users\\HP\\Desktop\\pass…
读取用户指定的任意文本文件,然后允许用户从该文件查找单词,查询的结果是该单词出现的次数,并列出每次出现所在的行,如果某单词在同一行中多次出现,程序将只显示改行的一次.行号按升序显示(int main()&&int main(int argc,char**argv)的区别算是了解了,但是跟int mian(int argc,char**argv){}中的文件操作还不熟悉,所以文件读取出现异常还不知道从哪里处理)[原来是中文字符不可以] code: //使用以vector容器存储行号的text…
STL实践与分析 --容器的综合应用:文本查询程序 引言: 本章中最重点的实例.由于不须要用到multiset与multimap的内容.于是将这一小节提到了前面.通过这个实例程序,大师分析问题的智慧,大师的编程风格.大师对程序的控制能力,由此可见一斑.因此.我对这一小节的内容差点儿不做改动.或仅仅做非常小的更改(由于有些东西不同人有不同的理解).搬出来.以供大家细致品读. 要求: 我们的程序将读取用户指定的随意文本文件,然后同意用户从该文件里查找单词.查询的结果是该单词出现的次数,并列出每次出现…
C++ 容器的综合应用的一个简单实例——文本查询程序 [0. 需求] 最近在粗略学习<C++ Primer 4th>的容器内容,关联容器的章节末尾有个很不错的实例.通过实现一个简单的文本查询程序,希望能够对C++的容器学习有更深的理解.由于是浅略探讨研究,高手可无视,各位读者发现有什么不妥的地方,请指教. 程序将读取用户指定的任意文本文件,然后允许用户从该文件中查找单词.查询的结果是该单词出现的次数,并列出每次出现所在的行.如果某单词在同一行中多次出现,程序将只显示该行一次.行号按升序显示,即…
近期在看C++ Primer复习C++的语法,看到书中15.9章中的文本查询演示样例时,认为设计得非常不错,于是便动手照着实现了一个,改动了非常久最终执行成功了,从中也学习到了非常多的语法.以下把实现与总结分享给大家: 首先是在10.6.2节中实现的TextQuery类: TextQuery.h #ifndef __TestC____TextQuery__ #define __TestC____TextQuery__ #include <iostream> #include <vecto…
编程过程中发现书本中的示例程序并不完全,某些地方存在错误,现已改正并添加少许注释.. 1 #include<iostream> 2 #include<fstream> #include<sstream> #include<vector> #include<map> #include<set> #include<algorithm> #include<stdexcept> using namespace std;…
C++ Primer书上这个例子讲的很不错,写写帮助自己理解标准库和智能指针. .h 文件内容 #include <fstream> #include <iostream> #include <vector> #include <string> #include <map> #include <set> #include <sstream> #include <memory> class QueryResult…
在这一章中,有以下的几点收获: 1.pair类型的使用相当频繁,如果需要定义多个相同的pair类型对象,可考虑利用typedef简化其声明: typedef pair<string, string> A;这样,在后面的使用中就可以直接用A来代替前面繁琐的书写. 2.三种方法创建pair对象: (1)第一种方法:使用函数make_pair() pair<string, string> spair; string first, last; while(cin >> firs…
C++ Primer笔记 ch2 变量和基本类型 声明 extern int i; extern int i = 3.14;//定义 左值引用(绑定零一变量初始值,别名) 不能定义引用的引用:引用必须被初始化:类型严格匹配:不能绑定字面值/计算结果:无法二次绑定 int i=4; int &r=i; 指针 本身是对象,允许赋值和拷贝:无需定义时赋初值:类型严格匹配 int *ip1, *ip2; int ival = 42; int *p = &ival; *p = 0; cout <…
问题:在上一篇继承与多态 文本查询的小例子(智能指针版本)在Query类里使用的是智能指针,只把智能指针换成普通的指针,并不添加拷贝构造方法,会发生什么呢? 执行时,代码崩掉. 分析下面一行代码: Query qb = ~Query("Alice"); 1,首先调用Query(string)的构造函数,把Query的成员q指向了new WordQuery(s) Query::Query(const std::string& s) : q(new WordQuery(s)){ s…