首页 > 代码库 > map实现单词转换程序的例子

map实现单词转换程序的例子

代码来源于c++ primer 10.3

功能:已知一个一一对应的词典,求一小段文档对应的“翻译”

词典如下:

A a B b C c D d E e

 输入:

D D E

 代码:

//需要两个文件,一个是字典文件,一个是输入文件#include <iostream>#include <fstream>#include <sstream>#include <utility>#include <map>#include <string>using namespace std;ifstream& open_file(ifstream &in, const string &file){        in.close();		in.clear();        in.open(file.c_str());		return in; }int main(int argc,char ** argv){	map<string, string> trans_map;	string key, value;	if (argc != 3)	{		throw runtime_error("wrong number of arguments ,we need an dictionary.txt and an input.txt");	}	ifstream map_file;	if (!open_file(map_file,argv[1]))	{		throw runtime_error("no dictionary file");	}	while (map_file >> key >> value)	{		trans_map.insert(make_pair(key, value));	}	ifstream input;	if (!open_file(input, argv[2]))	{		throw runtime_error("no input file");	}	string line;	while (getline(input, line))	{		istringstream stream(line);		string word;		bool firstword = true;		while (stream >> word)		{			map<string, string>::const_iterator map_it = trans_map.find(word);			if (map_it != trans_map.end())			{				word = map_it->second;			}			if (firstword)			{				firstword = false;			}			else			{				cout << " ";			}			cout << word;		}		cout << endl;	}	return 0;}

 操作,makefile:

edit:trans_words.o	g++ -o edit trans_words.otrans_words.o:trans_words.cpp	g++ -c trans_words.cppclean: 	rm trans_words.o

 run.sh

#!/bin/shmake./edit dictionary.txt input.txt

 结果:

d d e

 

map实现单词转换程序的例子