在c++中将文字从文本文件加载到映射中

Loading words from a text file to a map in c++

本文关键字:文件 加载 文本 映射 c++ 文字      更新时间:2023-10-16

我正在尝试制作一个程序,该程序计算特定单词出现在文本中的次数。单词列表将在一个文本文件中,而文本将在另一个文本文件中。列表中的单词和单词数量是未知的。我的计划是将单词列表制作成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

我需要帮助解决的主要问题是如何从文本文件中的单词制作地图。我可能可以自己整理其他的东西。显然,我不能向您展示我的任何代码,因为我需要在开始之前对其进行排序。

而且,这不是赋值,所以我可以用其他方式来做。请告诉如果你知道一个更有效的方法来做到这一点!

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

  2. 增加该单词的映射项

  3. (重复)
然后

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

  2. 输出该单词的映射条目

  3. (重复)

your_map。Insert (std::pair(your_string, your_int));

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

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

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

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