#include <fstream>
#include <stdexcept>
#include <sstream>
using namespace std;
ifstream& open_file(ifstream &in, const string &file)
{
in.close();
in.clear();
in.open(file.c_str());
return in;
}
int main(int argc,char *argv[])
{
map<string,string> trans_map;
string key,value;
if(argc != 3)
throw runtime_error("wrong number of arguments");
ifstream map_file; //jia.txt
if(!open_file(map_file,argv[1]))
throw runtime_error("no transformation file");
while(map_file>>key>>value) // 把jia.txt中的键值对一行一行读入到map对象map_file中
trans_map.insert(make_pair(key,value));
ifstream input; // 需要转化的文件,zhu.txt
if(!open_file(input,argv[2]))
throw runtime_error("no input file");
string line;
while(getline(input,line)) //getline读取文件input中的一行内容
{
istringstream stream(line); //为了获得每行中的单词,将一个istringstream对象与所读取行line绑定起来。
string word;
while(stream >> word) //这样,只需要使用普通的string输入操作符,即可读出这一行中的每一个单词。
{
map<string,string>::const_iterator it = trans_map.find(word); //word为键值
if(it != trans_map.end())
word = it->second; //word赋值为键值关联值
cout<<word<<" ";
}
cout<<endl;
}
}
STL map的使用
最新推荐文章于 2022-07-12 15:18:12 发布