map的使用:

 

 

#include <iostream>
#include <map>
#include <vector>
#include <string>
#include <fstream>
#include <sstream>

using namespace std;

ifstream& open_file(ifstream& in,const string&  file);

int main(int argc,char **argv){
 map<string,string> transmap;
 string key,value;

 if (argc != 3){
  throw runtime_error("wrong number of arguments!");
 }

 ifstream map_file;

 if (!open_file(map_file,argv[1])){
  throw runtime_error("no transformation file!");
 }

 while (map_file >> key >> value){
   transmap.insert(make_pair(key,value));
   }

 ifstream input;

 if (!open_file(input,argv[2])){
  throw runtime_error("no input file!");
 }

 string line;

 while (getline(input,line)){
  istringstream stream(line);
  string word;
  bool firstworld = true;
  while (stream >> word){
   map<string,string>::const_iterator map_it = transmap.find(word);           //find返回的是指向key_value的迭代器
   if (map_it != transmap.end()){                //如果找到
    word = map_it->second;               //輸出相應的value值
   }
   if (firstworld)
    firstworld = false;
   else
    cout<< " ";
   cout<< word;
  }
  cout<<endl;
 }
 return 0;
}

ifstream& open_file(ifstream& in,const string&  file){
  in.close();
  in.clear();
  in.open(file.c_str());
  return in;
}

 

1.txt中的內容:

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


2.txt的內容爲:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章