首页 > 代码库 > map实现单词转换程序的例子
map实现单词转换程序的例子
代码来源于c++ primer 10.3
功能:已知一个一一对应的词典,求一小段文档对应的“翻译”
词典如下:
A a B b C c D d E e
输入:
D D E
代码:
//需要两个文件,一个是字典文件,一个是输入文件#include <iostream>#include <fstream>#include <sstream>#include <utility>#include <map>#include <string>using namespace std;ifstream& open_file(ifstream &in, const string &file){ in.close(); in.clear(); in.open(file.c_str()); return in; }int main(int argc,char ** argv){ map<string, string> trans_map; string key, value; if (argc != 3) { throw runtime_error("wrong number of arguments ,we need an dictionary.txt and an input.txt"); } ifstream map_file; if (!open_file(map_file,argv[1])) { throw runtime_error("no dictionary file"); } while (map_file >> key >> value) { trans_map.insert(make_pair(key, value)); } ifstream input; if (!open_file(input, argv[2])) { throw runtime_error("no input file"); } string line; while (getline(input, line)) { istringstream stream(line); string word; bool firstword = true; while (stream >> word) { map<string, string>::const_iterator map_it = trans_map.find(word); if (map_it != trans_map.end()) { word = map_it->second; } if (firstword) { firstword = false; } else { cout << " "; } cout << word; } cout << endl; } return 0;}
操作,makefile:
edit:trans_words.o g++ -o edit trans_words.otrans_words.o:trans_words.cpp g++ -c trans_words.cppclean: rm trans_words.o
run.sh
#!/bin/shmake./edit dictionary.txt input.txt
结果:
d d e
map实现单词转换程序的例子
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。