C++ Primer 第5版--练习11.33
来源:互联网 发布:清风不语网络剧资源 编辑:程序博客网 时间:2024/06/10 14:19
练习 11.33:实现你自己版本的单词转换程序。
练习 11.34:如果你将transform函数中的find替换为下标运算符,会发生什么情况?
练习 11.35:在buildMap中,如果进行如下改写,会有什么效果?
trans_map[key] = value.substr(1);
改为trans_map.insert({key, value.substr(1)})
#include <iostream>#include <fstream>#include <sstream>#include <map>#include <stdexcept>using namespace std;map<string, string> buildMap(ifstream &map_file){ map<string, string> trans_map; string key, value; while(map_file >> key && getline(map_file, value)) if (value.size() > 1) trans_map[key] = value.substr(1); //trans_map.insert({key, value.substr(1)}); //与上条语句等价 else throw runtime_error("no rule for " + key); return trans_map;}const string &transform(const string &s, const map<string, string> &m){ auto map_it = m.find(s); if (map_it != m.end()) return map_it->second; else return s;}/*//transform函数中的find替换为下标运算符const string &transform(string &s, map<string, string> &m){ if (m[s].size()) s = m[s]; return s;}*/void word_transform(ifstream &map_file, ifstream &input_file){ auto trans_map = buildMap(map_file); string text; while(getline(input_file, text)) { istringstream stream(text); string word; bool firstword = true; while(stream >> word) { if (firstword) firstword = false; else cout << " "; cout << transform(word, trans_map); } cout << endl; }}int main(){ ifstream map_file("map.txt"), input_file("input.txt"); word_transform(map_file, input_file); return 0;}
阅读全文
0 0
- C++ Primer 第5版--练习11.33
- C++primer第5版课后练习习题答案 9.4
- C++primer第5版课后练习习题答案9.5
- C++primer第5版课后练习习题答案9.16
- C++primer第5版课后练习习题答案 9.20
- C++primer第5版课后练习习题答案9.26
- C++primer第5版课后练习习题答案9.28
- C++primer第5版课后练习习题答案9.47
- C++primer第5版课后练习习题答案9.51
- C++primer第5版课后练习习题答案9.52
- C++primer第5版课后练习习题答案7.23
- 《C Primer Plus(第5版)中文版》第7章编程练习第5题
- 《C Primer Plus(第5版)中文版》第6章编程练习第1题
- 《C Primer Plus(第5版)中文版》第6章编程练习第14题
- 《C Primer Plus(第5版)中文版》第6章编程练习第15题
- 《C Primer Plus(第5版)中文版》第6章编程练习第16题
- 《C Primer Plus(第5版)中文版》第7章编程练习第1题
- 《C Primer Plus(第5版)中文版》第7章编程练习第2题
- 数据库基础整理
- PAT1064 朋友数
- ACM题集以及各种总结大全!
- 深入理解JavaScript系列(37):设计模式之享元模式
- 点击一个按钮后可以切换按钮的背景图片并执行不同的点击事件
- C++ Primer 第5版--练习11.33
- 当Ubuntu 使用命令行“sudo apt-get update”时出现问题的解决方式
- Qt creator 中设置命令行参数方法
- 机器学习-周志华-个人练习11.1
- JS高级程序设计——基本包装类型
- 走格子
- 2017.5.15 COCI2011/2012 Contest#5
- 1099: 孤独的骑士
- 深入理解JavaScript系列(38):设计模式之职责链模式