从文本文件中读取单词

时间:2012-04-27 10:08:03

标签: c++

这是我必须遵循的要求:

  

将有一个C样式或C ++样式字符串来保存单词。一个int来保存每个单词的计数。用于保存这两者的结构或类。此结构/类将插入到STL列表中。您还需要一个C样式或C ++样式字符串来保存从文件中读取的文本行。您将根据assign spec中的单词定义将此行解析为单词。

第一部分似乎没问题,但是在第二部分中,我仍然没有明白有关读取一条线然后将其解析为一个单词的观点。它是否比使用?

直接从文本文件中读取单词更有效

3 个答案:

答案 0 :(得分:2)

效率取决于单词的定义(来自分配规范):如果你需要多次通过linem来确定单词的开始/结束位置(即属于单词的内容),将行保留在内存中更有效,然后多次执行从磁盘读取(尽管I / O缓存可以减少性能影响)。

即使没有性能提升,这是一项家庭作业,我认为你要这样做是为了学习1)如何从文件中读取字符串(行); 2)如何解析内存中的字符串。为了实现这两个目标,您有这个要求

答案 1 :(得分:0)

使用fstream从文件中读取每行,然后通过划分空格并直到loop中的行尾将其解析为单词。

答案 2 :(得分:0)

根据您的使用情况,逐行读取文件会很有用。

首先在内存中读取整个文件并在之后解析它不会最小化内存使用量。程序运行所需的内存至少是文件的大小。如果输入文件与程序可用的内存相比较大,则无法分配足够的内存来存储整个文件(尝试分配20GB的字符串以查看发生的情况)。

另一方面,如果你逐行阅读,一次只需要内存中一行的大小:你可以立即释放为前一行分配的内存。

因此,如果符合以下条件,逐行解析非常有用:

  • 输入文件太大,无法完全适合内存
  • 每行的大小足够小(如果文件由一个大行组成,则逐行读取)