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
时间: 2024-10-24 02:52:46

map实现单词转换程序的例子的相关文章

查询单词,综合例子。

12.32 重写TextQuery和QueryResult类,用StrBlob代替vector<string>保存输入文件. TextQuery.h #ifndef TEXTQUERY_H #define TEXTQUERY_H #include<iostream> #include<string> #include<fstream> #include<vector> #include<memory> #include<map&

springMVC返回map和返回json的例子

spring mvc 支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void. Map   @RequestMapping("/demo2/show") public Map<String, String> getMap() { Map<String, String> map = new HashMap<String, String>(); map.put("key1&

字符拆分存入Map计算单词的个数

///计算从命令行输入单词的种类与个数//Map<key,Value>Key-->单词:Value-->数量

C++primer 练习11.33:实现你自己版本的单词转换程序

// 11_33.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include<string> #include<map> #include<sstream> #include<fstream> using namespace std; //用map文件来建立一个要转换的字符串对应的转换成的字符串 map<string, string>

map 数单词

#include <iostream> #include <string> #include <map> #include <string.h> #include <stdio.h> #include <stdlib.h> using namespace std; int main() { char c; map<string,int> word; while((c=getchar() )!='#') { string t

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

#include <iostream> #include <map> #include <fstream> #include <sstream> #include <string> using namespace std; map<string,string> buildMap(ifstream & map_file) { map<string,string> trans_map; string key; stri

C++自学笔记_单词转换map对象_《C++ Primer》

今天在干<C++ Primer>第10章的时候似乎遇到了一点小瓶颈,翻回第8章吃了顿回头草.所以,老话说得好:欠下的总是要还滴 :) 一个小程序,很简单:单词转换程序:程序输入两个文件,第一个文件包括了若干单词对,没对的第一个单词将出现在输入的字符串中,而第二个单词 则是用于输出.本质上,这个文件提供的是单词转化的集合——在遇到第一个单词时,应该将之替换为第二个单词.第二个文件则提供了与要转换的文本. 打个比方:如果单词转换文件的内容为: 而要转换的文本是: Code: #include &l

Hadoop-2.4.1学习之Map任务源码分析(上)

众所周知,Mapper是MapReduce编程模式中最重要的环节之一(另一个当然是Reducer了).在Hadoop-2.x版本中虽然不再有JobTracker和TaskTracker,但Mapper任务的功能却没有变化,本篇文章将结合源代码深入分析Mapper任务时如何执行的,包括处理InputSplit,mapper的输出.对输出分类等.在进行分析之前先明确几个概念:作业.任务.任务的阶段和任务的状态,可以将作业理解为要最终实现的功能或目的,比如统计单词的数量,而任务就是对该作业的拆分,只负

List和Map之间的转换和关联

首先,Map.values返回的是此Map中包含的所有值的collection视图. 然后利用ArrayList的构造器ArrayList(Collection<? extends E> c)将map.values作为一个collection传入,得到以map.values的元素的列表且按照map.values的顺序排列. 例子: