利用指定文件进行参考以进行单词的转换

来源:互联网 发布:金融界免费炒股软件 编辑:程序博客网 时间:2024/06/04 22:08


#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;
}
0 0
原创粉丝点击