繁体   English   中英

从文本文件中读取单词

[英]Read word from a text file

这是我必须遵循的要求:

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

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM