《C++练习》——MAP的使用
来源:互联网 发布:qpst怎么添加端口 编辑:程序博客网 时间:2024/06/16 21:57
【主要摘录C++ Primer第十一章内容】
给定一个string,转换为另一个string。程序的输入是两个文件。第一个文件是一些规则,用来转换第二个文件中的文本。每条规则由两部分组成:一个可能出现在输入文件中的单词和一个用来替换它的短语。表达的含义是,每当第一个单词出现在输入中,我们就将他替换为对应的短语。
单词转换文件的内容如下所示:
brb be right back
k okey?
y why
r are
u you
pic picture
thk thanks!
18r later
希望转换的文本为:
where r u
y dont u send me a pic
k thk 18r
建立转换映射:
map<string, string> buildMap(ifstream &map_file){ map<string, string> trans_map;//保存转换规则 string key;//要转换的单词 string value;//替换后的内容 //将第一个单词存入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 &s, const map<string, string> &m){ //实际的转换工作;此部分是程序的核心 auto map_it = m.find(s); //如果单词在转换规则map中 if (map_it != m.cend()) { return map_it->second;//使用替换短语 } else { return s;//否则返回原string }}
单词转换程序:
void word_transform(ifstream &map_file, ifstream &input){ auto trans_map = buildMap(map_file);//保存转换规则 string text; //保存输入中的每一行 while (getline(input, text)) //读取一行输入 { istringstream stream(text); //读取每个单词 string word; //控制是否打印空格 bool firstword = true; while (stream >> word) { if (firstword) { firstword = false; } else { cout << " "; //在单词间打印一个空格 } //transform返回它的第一个参数或其转换后的形式 cout << transform(word, trans_map); //打印输出 } cout << endl; }}
头文件、主函数及输出结果:
#include "stdafx.h"#include <iostream>#include <string>#include <map>#include <fstream>#include <sstream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ ifstream file1("in.txt"); ifstream file2("out.txt"); word_transform(file1, file2); system("pause"); return 0;}
0 0
- 《C++练习》——MAP的使用
- 菜鸟学习c++—map使用练习 实现词频统计程序
- 【C++】map的使用
- UVa——540Team Queue(STL练习map、queue数组的综合使用)
- Map练习2—Primer1132
- 【语言-c++】map的使用
- C++—map的基本操作总结
- C++——map
- ibatis使用心得——返回Map的Map
- [C++][STL][map]C++ map的基本操作和使用
- C++map的使用总结及常用map操作
- C++map的基本操作和使用
- C++map的基本操作和使用
- C++map的基本操作和使用
- C++map的基本操作和使用
- C++map的基本操作和使用
- C++map的基本操作和使用
- C++map的基本操作和使用
- Android-Camera2Video的demo源码和调试心得
- Android 学习 利用反射实现Android中的ioc框架
- PDO初探exec方法
- XML 解析
- c#调DLL
- 《C++练习》——MAP的使用
- 彻底征服 Spring AOP 之 实战篇
- java.io.FileNotFoundException异常的原因
- Objective-C insertObject:atIndex 和 arrayWithCapacity:
- 新的一年,SEO之路如何走更好
- SEOer你转型了吗?SEO生存之悲哀_岑辉宇SEO博客
- 清华EMBA课程系列思考之十六(1) -- 创新与企业转型
- http 1.1中的常用的术语
- 访谈小朱:三年成立公司,但他依然再学SEO_岑辉宇博客