#include < iostream>
#include < fstream>
#include < sstream>
#include < algorithm>
#include < map>
#include < string>
using namespace std;
map< string,
string> BuildMap
(ifstream &mapFile)
{
map<
string, string>
transMap;
//save the rule of transform
string
key;
//the word will be transformed
string
value;
//after-be-replaced word
while
(mapFile >
> key && getline
(mapFile, value)) {
if (value.size ()
>
1)
//if trans form role is exist
transMap[key] = value.substr
(1);
//skip the first space
else
throw runtime_error ("no rule for" + key);
}
return
transMap;
}
const string&
transform (const string &s, map< string,
string>
&tempMap)
{
return (tempMap.find (s) !=
tempMap.cend ()) ? tempMap[s] : s;
}
void WordTransform (ifstream &mapFile, ifstream &input)
{
auto
transMap = BuildMap (mapFile);
//save the rule of transform
string
text;
//save everyline of the input file
while
(getline (input, text)) {
//read every line
istringstream stream
(text);
//read every word
string word;
bool firstWord = true;
while (stream >
> word)
{
//read text word by word
if (firstWord)
firstWord = false;
else
cout <
< "
";
//space between every word
//function transform return the first argument or
the format have be transformed
cout <
<
transform (word, transMap);
}
cout <
<
endl;
//finish the transform of a line
}
}
int main (int argc, char* argv[])
{
std::ios::sync_with_stdio (false);
ifstream
mapFile (argv[1]), input(argv[2]);
WordTransform (mapFile, input);
return
0;
}
#include <
#include <
#include <
#include <
#include <
using namespace std;
map<
{
}
const string&
transform (const string &s, map<
{
}
void WordTransform (ifstream &mapFile, ifstream &input)
{
}
int main (int argc, char* argv[])
{
}