【问题标题】:best way to work with unknown size stream处理未知大小流的最佳方法
【发布时间】:2013-09-19 09:06:55
【问题描述】:

有一个未知大小的流(我的班级)。当 Stream 结束时,Read() 返回 0。没关系。 但是在这种情况下出现了 CopyToEnd() 的概念问题。 CopyToEnd() 从某个位置读取一些字节数并将它们复制到 Stream 的末尾。 但是,如果它不知道流大小,它怎么能做到这一点呢? 创建一个虚拟抽象方法 SeekToEnd() 并在 Stream 继承的类中定义它可能是一个好主意吗?或者在知道大小流的子类中移动方法 CopyToEnd() 更合理?欢迎任何想法。

【问题讨论】:

  • 为您的读取缓冲区考虑一个动态增长算法。或者决定一次处理多少数据,并在分区中读取。不管怎样,这个问题有点……模糊。
  • @WhozCraig 谢谢你的评论。我将重新考虑 CopyToEnd() 的行为

标签: c++ oop stream


【解决方案1】:

我认为,您可以将“after-end”链接列表保留在您的类中,其中累积来自对 CopyToEnd() 的顺序调用的值。当您从原始文件到达 EOF 时,不要返回 0,而只是开始处理保存的列表。列表结束时返回 0。

这种机制解决了许多“边缘情况” - 例如,当您从链接列表中读取块时(在真实文件结束后),同时 - 调用 CopyToEnd()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 2012-09-24
    • 2015-02-28
    • 1970-01-01
    • 2020-11-24
    相关资源
    最近更新 更多