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实现单词转换程序的例子的主要内容,如果未能解决你的问题,请参考以下文章

编译原理 实验一 java语言实现对C语言词法分析

编译原理 实验一 java语言实现对C语言词法分析

spark 例子wordcount topk

用map的单词转换以及文件打开的相对路径问题

编写一个程序, 将 a.txt 文件中的单词与 b.txt 文件中的 单词交替合并到 c.txt 文件中, a.txt 文件中的单词用回车符 分隔, b.txt 文件中用回车或空格进行分隔。(代码片段

css实现的将英文单词进行大小写转换代码实例