#include #include #include #include #include using namespace std; // 声明 map buildMap(ifstream &map_file); const string &transform(const string &s, const map &m); void word_transform(ifstream &map_file, ifstream &input) { auto trans_map = buildMap(map_file); string text; while (getline(input,text)) { istringstream stream(text); //此函数健cpp primer p287 从string读取数据,在此次为读取每个单词 string word; bool firstword = true; //判断是否打印单词 while (stream >> word){ if(firstword) firstword = false; else cout << " "; //单词之间留空格 cout << transform(word, trans_map); } cout << endl; //一行完成 } } map buildMap(ifstream &map_file) { map trans_map; string key; string value; while(map_file >> key && getline(map_file, value)) if (value.size() > 1) trans_map[key] = value.substr(1); //getline 不会跳过前导空格,用substr 实现,从第一个字符开始(跳过第0个) else throw runtime_error("no rule for" + key); return trans_map; } const string &transform(const string &s, const map &m) { auto map_it = m.find(s); if (map_it != m.cend()) return map_it->second; else return s; //返回原来的string } int main(){ //创建两个文件导入 ifstream map_file("map_file"); ifstream input("input"); word_transform(map_file, input); }
创建两个文本文件,
输出如下:
上一篇 【C语言】深入理解一维数组
下一篇 LeetCode刷题day20
版权所有 (c)2021-2022 MSHXW.COM
ICP备案号:晋ICP备2021003244-6号