C++ 从文本文件中读取word

C++ 从文本文件中读取word,c++,C++,这是我必须遵守的要求: 将有一个C风格或C++风格的字符串来保存单词。保存每个单词计数的int。包含这两个元素的结构或类。此结构/类将插入到STL列表中。您还需要一个C样式或C++风格的字符串来保存从文件中读取的文本行。您将根据assign spec中的单词定义将该行解析为单词 第一部分看起来不错,但在第二部分,我仍然不明白读一行然后把它解析成一个单词的意思。它比直接从文本文件中读取一个单词更有效吗?效率取决于单词的定义(来自作业规范):如果您需要多次检查行M以确定单词的开始/结束位置(即单词的

这是我必须遵守的要求:

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


第一部分看起来不错,但在第二部分,我仍然不明白读一行然后把它解析成一个单词的意思。它比直接从文本文件中读取一个单词更有效吗?

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


即使没有性能提升,这是一个家庭作业,我想你被要求这样做是为了学习1)如何从文件中读取字符串(行);2) 如何解析内存中的字符串。为了同时实现这两个目标,您需要使用
fstream
从文件中读取每行内容,然后通过在
循环中检查空格和直到行尾将其解析为单词

根据您的用例,逐行读取文件可能很有用

首先在内存中读取整个文件,然后对其进行解析并不能最大限度地减少内存使用。程序运行所需的内存至少与文件大小相同。如果输入文件比程序可用的内存大,您将无法分配足够的内存来存储整个文件(请尝试分配20GB的字符串,看看会发生什么)

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

因此,在以下情况下,逐行分析非常有用:

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