您的位置:首页 > 编程语言 > C语言/C++

c++ 单词转换 map对象

2015-07-02 17:01 495 查看
#include <map>
#include <sstream>
#include <fstream>
#include <iostream>
#include <string>
#include <exception>
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<string,string> 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<string,string>(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<string,string>::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<<word;
lineFirst=false;
}else{
cout<<" "<<word;//print space between words;
}
}
cout<<endl;//done with this line of input
}
return 0;
}

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
程序运行输出:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: