您的位置:首页 > 其它

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

2015-11-07 17:36 309 查看
#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;

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