原书:Essential C++, Stanley B. Lippman, 电子工业出版社, 2013.
章节:第3章 泛型编程风格
环境:CLion + MinGW + GCC 8.1.0
3.1 编写读取文本文件的程序,将文件中的每个单字存入map,map的key便是刚才所说的单字,map的value则是该单字在文本文件中的出现次数。再定义由排除字眼组成的set,包含诸如a, an, or, the, and, but之类的单字,将某单字放入map之前,先确定其不在排除字集中。文本文件读取完毕后,显示单字清单与各个单字的出现次数。可加以扩展,允许用户在显示单字前,查询某个单字是否出现在文本文件中
#include <iostream>
#include <string>
#include <iterator>
#include <fstream>
#include <map>
#include <set>
using namespace std;
int main(){
string shadow[] = {
"a", "an", "or", "the", "and", "but"};
set<string> shadow_words(shadow, shadow + 6);
map<string, int> text;
ifstream infile("in.txt");
istream_iterator<string> is(infile);
istream_iterator<string> eof;
for(; is != eof; ++is)
if(shadow_words.find(*is) == shadow_words.end())
text[*is]++;
string word;
while(true){
cout << "You can input a word to check if it is in the text." << endl;
cout << "[1] Show the list" << endl;
cout << "[0] Exit the program" << endl;
cin >> word;
if(word == "0")
break;
else if(word == "1")