【发布时间】:2019-03-27 18:49:14
【问题描述】:
所以我有几个文件,这些文件形成了数量不定的行,所以我们称它们为 file1、file2、file3 等等。我想要做的是创建一个 istream 类,它将所有文件都流式传输,就好像它们是一个一样。我得到的一件事不是子类化 std::istream 而是重新实现 streambuf。我的问题是:我将如何解决这个问题 - 我如何能够从多个文件中读取而不将它们全部存储在内存中?
【问题讨论】:
-
"but to reimplement streambuf" 我怀疑这种限制是否合理可行。但是¯_(ツ)_/¯谁知道...
-
不清楚您想如何读取多个文件。在您知道如何从多个文件中读取以及如何处理它们的内容之前,如何将其包装到
std::istream接口中是次要的 -
“我怎么能从多个文件中读取而不将它们全部保存在内存中” - 我怀疑你是否能够做到,而其中至少有 部分记忆。您将如何阅读无法阅读的内容?
-
我自己有点挣扎,这可能没有意义。所以这里有一个初步的“想法”它是如何工作的:创建一个缓冲区,将文件流式传输到缓冲区中,如果一个文件完成并且缓冲区还有空间 - 开始将另一个文件加载到其中。我自己对这个想法有点怀疑,并问自己这是否是好的设计,因此问。
-
您想按什么顺序阅读内容?如果是一个接一个的文件,你不必自己写任何东西