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

来源:互联网 发布:股票t 0交易平台源码 编辑:程序博客网 时间:2024/05/07 19:40

针对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;elsecout<<" ";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



0 0
原创粉丝点击