c++ 单词转换 map对象

2015-11-21 00:58:19 · 作者: · 浏览: 5
#include 
#include #include #include #include #include using namespace std; ifstream& openfile(ifstream &in,const string &filename){ in.close();//close in case it was alrady open in.clear();//clear any existing errors in.open(filename.c_str());//open the file we were given //in要么于指定文件绑定起来了,要么处于错误条件状态 return in;//condition state is good if open succeeded } int main(int argc,char** argv) { map trans_map; string key,value; ifstream map_file; if(!openfile(map_file,transform.txt)){ throw runtime_error(no transformation file); } //read the tansformation map and build the map while(map_file>>key>>value){ trans_map.insert(pair (key,value)); } ifstream input; if(!openfile(input,source.txt)){ throw runtime_error(no input file); } string line;//hold each line from the input //read the text to transform it a line at a time while(getline(input,line)){ istringstream stream(line); //read the line a word at a time string word; //读字符串流 bool lineFirst=true;//controls whether a space is printed while(stream>>word){ //ok:the actual mapwork,this part is the heart of the program map ::const_iterator iter=trans_map.find(word); if(iter!=trans_map.end()){ //replace it by the transformation value in the map word=iter->second; } if(lineFirst){ cout<

transform.txt文件内容:

?

em them
cuz because
gratz grateful
i I
nah no
pos	supposed
sez said 
tanx thanks
wuz was

source.txt文件内容:

?

?

nah i sez tanx cuz i wuz pos to
not cuz i wuz gratz

?

程序运行输出:

\

?