在c ++中将文本文件中的单词加载到地图中

时间:2013-04-04 18:54:25

标签: c++ file-io map

我正在尝试创建一个计算特定单词出现在文本中的时间的程序。单词列表将在一个文本文件中,文本将在另一个文本文件中。列表中的单词和单词数量未知。我的计划是将单词列表变成map<string,int>name样式的地图,其中不同的单词作为键,然后在地图中将值增加1。

以下是一个例子:

FILE.TXT:

This is the text the program will analyze with the other file. Fun stuff.

LIST.TXT:

the
other
normal

运行程序时的预期结果是:

name[the] = 3
name[other] = 1
name[normal] = 0

我需要帮助解决的主要问题是如何根据文本文件中的单词制作地图。我可以自己理清其他内容。我显然无法向你展示我的任何代码,因为我需要在开始之前对其进行排序。

此外,这不是作业,所以我可以自由地以任何其他方式进行。请告诉您是否了解更有效的方法!

3 个答案:

答案 0 :(得分:2)

  1. 文本文件中读取一个单词。

  2. 增加该字词的地图条目

  3. (重复)

  4. 然后

    1. 单词文件中读取一个单词。

    2. 输出该单词的地图条目

    3. (重复)

答案 1 :(得分:0)

your_map.insert(std :: pair(your_string,your_int));

如果你没有很多单词,你也可以考虑使用多图,然后调用count:

http://www.cplusplus.com/reference/map/multimap/count/

答案 2 :(得分:0)

这里的很多内容取决于您希望在单词列表中显示的文本文件的百分比。如果你希望大多数单词都在列表中,那么@DrewDorman的解决方案应该可以很好地工作。

如果您希望列表中只有一小部分单词,那么可能会非常浪费。在这种情况下,您可能希望首先将列表中的单词插入到地图中(计数为0),然后在从文本文件中读取单词时,在地图中搜索每个单词并在当前时增加计数如果地图中已存在该单词的条目。