map实现单词转换程序的例子
Posted 司马_羽鹤
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.o trans_words.o:trans_words.cpp g++ -c trans_words.cpp clean: rm trans_words.o
run.sh
#!/bin/sh make ./edit dictionary.txt input.txt
结果:
d d e
以上是关于map实现单词转换程序的例子的主要内容,如果未能解决你的问题,请参考以下文章
编写一个程序, 将 a.txt 文件中的单词与 b.txt 文件中的 单词交替合并到 c.txt 文件中, a.txt 文件中的单词用回车符 分隔, b.txt 文件中用回车或空格进行分隔。(代码片段