C++中map容器实现单词转换的程序

原创 2013年12月06日 10:53:34
/*
文本转换程序,将一个输入的txt文件中的某些单词根据已知的转换表转换成对应的单词
说明:1.map_file.txt中存放的是单词的转换表,也就是一个单词对应一个单词,放在程序的同目录下
      2.trans.txt中存放的是需要转换的文本
	  3.该程序使用的是map容器实现
*/
#include <iostream>
#include <map>
#include <string>
#include <fstream>
#include <sstream>

using namespace std;
//编写打开文件用于读
ifstream& open_file(ifstream &in,const string file)
{
	in.close();
	in.clear();
	
	//读文件
	in.open(file.c_str());
	return in;
}
int main()
{
	string key,value;
	map<string,string> trans_map;
	//打开文件是否成功进检查
	ifstream infile;
	if(!open_file(infile,"map_file.txt"))
	{
		throw runtime_error("file can not open");
		return -1;
	}
	else
	{
		//将转换表(文本)读入到map中
		while(infile >> key >> value)
		{
			trans_map.insert(make_pair(key,value));
		}
	}
	//输入要转换的文本
	ifstream input;
	if(!open_file(input,"trans.txt"))
	{
		throw runtime_error("file can not open");
		return -1;
	}
	else
	{
		map<string,string>::iterator it;
		string line,word;
	
		
		while(getline(input,line))
		{//每次读取一行字符
			//定义string输入流,每次只读入一个string
			istringstream stream(line);
			//标记每一行第一个单词第一个单词前不用输出空格
	     	bool firstword = true;
			while(stream >> word)
			{
				it = trans_map.find(word);
				//如果输出的是第一个单词则不用输出空格
				if(firstword)
				{
					firstword = false;
				}
				else
				{
					cout << " ";
				}
				//对应转换单词
				if(it != trans_map.end())
				{
					cout << it->second;
				}
			
			}

		cout << endl;
		
		}
	
	}


	return 0;
}


c++学习笔记——个单词转换的map程序详解

实现功能:给定一个string,将它转换为另一个string。程序输入是两个文件,第一个文件保存转换规则,第二个文件为将要进行转换的文本。 IDE:Windows7+VS2013 #include "...
  • xujian_2014
  • xujian_2014
  • 2015年01月07日 16:36
  • 807

C++ STL 中 map 容器的说明和使用技巧

Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!    1、map简介 map是一类关联...
  • u014552726
  • u014552726
  • 2014年07月22日 10:04
  • 8474

C++ map容器 学习笔记

map映照容器的元素数据是一个由键值和一个映照数据组成的,键值与映照数据之间具有一一映照的关系。 map映照容器的数据结构也是采用红黑树来实现的,插入元素的键值不允许重复,比较函数只对元素的键值进行...
  • u012823258
  • u012823258
  • 2014年02月24日 22:11
  • 1316

C++关联容器 map用法

原创作品 转载请注明出处 http://blog.csdn.net/always2015/article/details/44980187关联容器关联容器和顺序容器有着根本的不同:关联容器中...
  • Always2015
  • Always2015
  • 2015年04月10日 15:21
  • 1351

C/C++知识要点2——STL中Vector、Map、Set容器的实现原理

1、Vector是顺序容器,是一个动态数组,支持随机存取、插入、删除、查找等操作,在内存中是一块连续的空间。在原有空间不够情况下自动分配空间,增加为原来的两倍。vector随机存取效率高,但是在vec...
  • TommyZht
  • TommyZht
  • 2015年08月06日 10:40
  • 3604

map——单词的转换

程序实现目的:根据“转换规则文件(暗码)”对“待转换文件(明文)”进行转换。 使用数据结构:map的创建、搜索、以及遍历。 //map的创建、搜索、以及遍历 //单词转换 #include//定...
  • songshiMVP1
  • songshiMVP1
  • 2015年07月10日 14:44
  • 481

【C++】STL常用容器总结之八:映射map

9、映射mapMap是键-值对的集合,map中的所有元素都是pair,可以使用键作为下标来获取一个值。Map中所有元素都会根据元素的值自动被排序,同时拥有实值value和键值key,pair的第一元素...
  • hero_myself
  • hero_myself
  • 2016年08月25日 12:20
  • 1518

map容器的详细用法

map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候...
  • kavu1
  • kavu1
  • 2016年10月06日 17:28
  • 1236

使用map关联容器实现单词转换的程序

针对C++Primer(第四版)10.3.9节的单词转换程序实现与分析,参照书本p317-318。 实现源代码如下:#include #include //使用istringstream、ostr...
  • dingyanxxx
  • dingyanxxx
  • 2014年01月17日 08:33
  • 556

统计单词出现个数(STL-map求解)

string strs[] = { “zhangsan”, “zhangsan”, “lisi”, “wangwu”, “lisi”, “zhaoliu”,”lisi” }; 问题一:统计单词出现的...
  • qq_34312386
  • qq_34312386
  • 2017年02月16日 22:53
  • 391
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++中map容器实现单词转换的程序
举报原因:
原因补充:

(最多只允许输入30个字)