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

针对C++Primer(第四版)10.3.9节的单词转换程序实现与分析,参照书本p317-318。

程序代码如下:

#include <iostream>
#include <sstream>	//使用istringstream、ostringstream、stringstream;
					//三个类创建的对象必须包含的头文件;
#include <string>
#include <fstream>
#include <map>
using namespace std;

int main()
{
	map<string,string> trans_map;	//创建一个空的map关联容器;
	string key,val;


	ifstream map_file;	//以读方式打开转换文件;
	map_file.open("map.dat",ios::in);
	if(!map_file)
	{
		cerr<<"Unable to open file : map.dat"<<endl;
		return -1;
	}


	while (map_file>>key>>val)	//将映射文件的单词对放在map关联容器中;
	{
		trans_map.insert(make_pair(key,val));
	}


	ifstream input;	//以读方式打开输入文件
	input.open("inputfile.dat",ios::in);


	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;
}


map.dat文件内容为:

’em them
cuz because
gratz grateful
i I
nah no
pos supposed
sez said
tanx thanks
wuz was


inputfile.dat文件内容为:

nah i sez tanx cuz i wuz pos to
not cuz i wuz gratz

单词转换转换程序运行输出为:

no I said thanks because I was supposed to not because I was grateful



发布了12 篇原创文章 · 获赞 12 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览