#include <iostream>
#include <sstream>
#include <fstream>
#include <map>
#include <string>
#include <stdexcept>
using namespace std;
ifstream& open_file(ifstream &in, const char *str) {
in.close();
in.clear();
in.open(str);
return in;
}
string get_word(const string &word) {
unsigned found = word.find_last_of(",.?!");
string newword = word.substr(0,found);
return newword;
}
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;
if (!open_file(map_file,argv[1]))
throw runtime_error("no transformation file");
while(map_file>>key>>value) {
trans_map.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);
bool firstword = true;
string word;
while(stream >> word) {
word = get_word(word);
map<string,string>::const_iterator map_it = trans_map.find(word);
if (map_it != trans_map.end())
word = map_it->second;
if (firstword)
firstword = false;
else
cout<<" ";
cout<<word;
}
cout<<endl;
}
return 0;
}
#include <sstream>
#include <fstream>
#include <map>
#include <string>
#include <stdexcept>
using namespace std;
ifstream& open_file(ifstream &in, const char *str) {
in.close();
in.clear();
in.open(str);
return in;
}
string get_word(const string &word) {
unsigned found = word.find_last_of(",.?!");
string newword = word.substr(0,found);
return newword;
}
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;
if (!open_file(map_file,argv[1]))
throw runtime_error("no transformation file");
while(map_file>>key>>value) {
trans_map.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);
bool firstword = true;
string word;
while(stream >> word) {
word = get_word(word);
map<string,string>::const_iterator map_it = trans_map.find(word);
if (map_it != trans_map.end())
word = map_it->second;
if (firstword)
firstword = false;
else
cout<<" ";
cout<<word;
}
cout<<endl;
}
return 0;
}