C++ 处理未知大小流的最佳方法
有一个未知大小的流(我的类)。流结束时,Read()返回0。没关系。 但是在这种情况下,CopyToEnd()出现了一个概念上的问题。 CopyToEnd()从某个位置读取一些字节计数,并将它们复制到流的末尾。 但是如果它不知道流的大小,它怎么能做到这一点呢?C++ 处理未知大小流的最佳方法,c++,oop,stream,C++,Oop,Stream,有一个未知大小的流(我的类)。流结束时,Read()返回0。没关系。 但是在这种情况下,CopyToEnd()出现了一个概念上的问题。 CopyToEnd()从某个位置读取一些字节计数,并将它们复制到流的末尾。 但是如果它不知道流的大小,它怎么能做到这一点呢? 创建一个虚拟抽象方法SeekToEnd()并在流继承的类中定义它可能是个好主意?或者在知道大小流的子类中移动CopyToEnd()方法更合理?欢迎提出任何想法。我认为,您可以保留在类的“结束后”链接列表中,在该列表中,通过对CopyToE
创建一个虚拟抽象方法SeekToEnd()并在流继承的类中定义它可能是个好主意?或者在知道大小流的子类中移动CopyToEnd()方法更合理?欢迎提出任何想法。我认为,您可以保留在类的“结束后”链接列表中,在该列表中,通过对CopyToEnd()的顺序调用累积值。当您从原始文件到达EOF时,不返回0,只需开始处理保存的列表。列表结束时返回0
这种机制解决了许多“边缘情况”——例如,当您从链接列表(在实际文件结束后)读取块时,同时调用CopyToEnd()。考虑为您的读取缓冲区使用动态增长算法。或者决定一次要处理多少数据,并在分区中读取。不管怎样,这个问题有点。。。含糊不清。@WhozCraig感谢您的评论。我将重新考虑CopyToEnd()的行为