// example1003.cpp : 定义控制台应用程序的入口点。 //书10.3.9例子 单词转换map对象 //第一个文件:mapfile单词转换集合,第二个文件inputfile:要转换得文件; //输出到outputfile“out” #include "stdafx.h" #include <map> #include <string> #include <iostream> #include <fstream> #include <sstream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { map<string,string> trans_map; string strkey,strvalue; if(argc != 3) throw runtime_error("wrong number of arguments"); //将转换文件中得“转换对”插入map容器 ifstream mapfile_stream(argv[1]); if (!mapfile_stream) throw runtime_error("no transformation file"); while (mapfile_stream >> strkey >> strvalue) trans_map.insert(make_pair(strkey,strvalue)); ifstream input_stream(argv[2]); if (!input_stream) throw runtime_error("no input file"); ofstream output_stream("out"); if (!output_stream) throw runtime_error("no input file"); //对于每行中得每个word,查找map容器,转换 string line; while (getline(input_stream,line)){ istringstream isstream(line); string word; bool firstword =true; while (isstream >> word){ map<string,string>::const_iterator map_iter = trans_map.find(word); if(map_iter != trans_map.end()) word = map_iter->second; if(firstword) firstword =false; else output_stream << " "; output_stream << word; } output_stream << endl; } return 0; }