#include #include #include #include #include #include #include using namespace std; class Line : public string { using string::string; }; istream& operator>>(istream& lhs, Line& rhs) { std::getline(lhs, rhs); return lhs; } int main() { ifstream ifs{"SYNONYMS"}; map synonyms{}; transform(istream_iterator{ifs}, istream_iterator{}, inserter(synonyms, begin(synonyms)), [](string const& line) { // cout << line << endl; auto it{find(begin(line), end(line), '=')}; return make_pair(string{begin(line), prev(it)}, string{next(next(it)), end(line)}); }); vector words{}; transform(istream_iterator{cin}, istream_iterator{}, back_inserter(words), [&synonyms](string const& word) { auto it{synonyms.find(word)}; if (it != end(synonyms)) return it->second; return word; }); copy(begin(words), end(words), ostream_iterator{cout, " "}); cout << endl; }