C++Primer第11章 一个单词转换的map【程序】
来源:互联网 发布:vb施工管理 编辑:程序博客网 时间:2024/06/10 04:48
程序的功能:
从规则文件rule.txt读入转换的规则,生成map<string, string>
从待转换的文件file.txt读取文本,进行单词转换。
main.cpp
#include <iostream>#include <string>#include <map>#include <fstream>#include <sstream>using namespace std;//单词转换函数const string word_transform(ifstream &map_file, ifstream &input);//读入规则文件,生成对应的map映射map<string, string> buildMap(ifstream &map_file);//转换操作const string &transform(const string &word, const map<string, string> &map);int main() { ifstream file_stream("D:\\Tao\\C_CPP_Projects\\aaC++\\files\\file.txt"); //待转换的文件 ifstream map_stream("D:\\Tao\\C_CPP_Projects\\aaC++\\files\\rule.txt"); //规则文件 const string result = word_transform(map_stream, file_stream); cout << result; return 0;}const string word_transform(ifstream &map_file, ifstream &input) { string result = ""; map<string, string> trans_map = buildMap(map_file); string text; //每次读入一行待转换的文本 while(getline(input, text)) { stringstream ss(text); string word; bool first_word = true; //每次取这行文本中的一个单词 while(ss >> word) { if(first_word) first_word = false; else result += " "; //转换每个单词 result += transform(word, trans_map); } result += '\n'; } return result;}//读入规则文件,生成对应的map映射map<string, string> buildMap(ifstream &map_file){ map<string, string> trans_map; //保存转换规则的map string key; //键 string value; //值 string line; //读取第一个单词到key,剩下的所有内容读入value while(map_file >> key && getline(map_file, value)) { if(value.size() > 1) { trans_map[key] = value.substr(1); //跳过前导空格 } else { throw runtime_error("no rule for " + key); } } return trans_map;}//转换操作const string &transform(const string &word, const map<string, string> &map){ auto map_iter = map.find(word); if(map_iter != map.cend()) return map_iter->second; else return word;}
0 0
- C++Primer第11章 一个单词转换的map【程序】
- c++primer关联容器中的“单词转换map程序”分析
- C++ Primer : 第十一章 : 关联容器示例: 一个单词转换的map
- C++primer 第十章 单词转换程序 运行不了解决办法
- 一个单词转换的map
- 使用map实现单词转换的程序
- P391--一个单词转换的map
- C++ Primer 第十章 10.3.9 “单词转换”map对象
- C++ primer 单词转换 map对象
- c++ primer中关于单词转换的程序
- c++ primer 习题之 单词转换程序
- C++ Primer 关联容器 单词转换程序
- C++中map容器实现单词转换的程序
- 使用map关联容器实现单词转换的程序
- C++Primer第五版 练习11.38-2单词转换程序(解答)
- C++ primer中,"单词转换"map对象源码问题
- C++ primer 单词转换(使用map对象)
- 一个运用map的文本转换程序
- 罪犯转移
- Echarts报表插件,从数据库获取数据,json传值,在页面进行展示
- input标签 各属性解释
- angularjs 常用代码块
- JAVA中常用的格式转换
- C++Primer第11章 一个单词转换的map【程序】
- 巧妙利用两个指针遍历链表——链表中倒数第k个结点
- 使用codepush进行ReactNative热部署react-native-code-push
- Java布尔包装类
- Java集合剖析之LinkedHashMap
- 反射用法
- 20个常用的位运算技巧
- Java无符号数据类型
- Android退出应用最优雅的方式