代码来源于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
时间: 2024-10-24 02:52:46