手机
当前位置:查字典教程网 >编程开发 >C语言 >使用map实现单词转换的实例分析
使用map实现单词转换的实例分析
摘要:使用map实现单词转换的实例分析从map中查找单词时必须使用find函数,不能使用下表,因为在map中使用下标访问不存在的元素将导致在map...

使用map实现单词转换的实例分析

从map中查找单词时必须使用find函数,不能使用下表,因为在map中使用下标访问不存在的元素将导致在map容器中添加一个新的元素,新元素的key即要查找的内容。

复制代码 代码如下:

/*****************************************************************************

* Open file

*****************************************************************************/

ifstream& open_file(ifstream &in, const string &file)

{

in.close(); // close in case it was already open

in.clear(); // clear any existing errors

// if the open fails, the stream will be in an invalid state

in.open(file.c_str()); // open the file we were given

return in; // condition state is good if open succeeded

}

/*****************************************************************************

* Word Transform

*****************************************************************************/

void WordTransform(const string rule, const string infile)

{

if (rule.empty() || infile.empty())

{

return;

}

map<string ,string> trans_map;

string key, value;

// Open transformation file and check that open succeeded

ifstream map_file;

if (!open_file(map_file, rule))

{

throw runtime_error("No transformation file.");

}

// Read the transformation map and build the map

while (map_file >> key >> value)

{

trans_map.insert(make_pair(key, value));

}

// Open the input file and check that the open succeeded

ifstream input;

if (!open_file(input, infile))

{

throw runtime_error("No input file.");

}

string line; // Hold each line from the input

// Read the text to transform it a line at a time

while (getline(input, line))

{

istringstream stream(line);// Read the line a word at a time

string word;

bool bFirstWordFlg = true;// Controls whether a space is printed

while (stream >> word)

{

// ok: the actual mapwork, this part is the heart of the program

map<string, string>::const_iterator map_it = trans_map.find(word);

// If this word is in the transformation map

if (map_it != trans_map.end())

{

// Replace it by the transformaion value in the map

word = map_it->second;

}

if (bFirstWordFlg)

{

bFirstWordFlg = false;

}

else

{

cout << " ";// Print space between words

}

cout << word;

}

cout << endl;// Done with this line of input

}

}

【使用map实现单词转换的实例分析】相关文章:

C 转移表/转换表的深入分析

short与int转换的小例子

新旧MFC版本实现CEdit透明的2种方法的实例代码

用C# 实现鼠标框选效果的实现代码

用C语言实现单链表的各种操作(二)

C语言可变参数函数详解示例

基于C语言指令的深入分析

从汇编看c++中变量类型的深入分析

如何用C语言生成简单格式的xml

基于c++强制类型转换的(总结)详解

精品推荐
分类导航