使用未知大小的流的最佳方式

时间:2013-09-19 09:06:56

标签: c++ oop stream

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

1 个答案:

答案 0 :(得分:0)

我认为,您可以在您的班级“后端”链接列表中保留,其中累计从序列调用到CopyToEnd()的值。从原始文件到达EOF时,不要返回0,而只是开始处理保存的列表。列表结束时返回0。

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