人为限制ostream

Artificially limited ostream

本文关键字:ostream 人为      更新时间:2023-10-16

我正在编写一个与std::ostreams耦合的对象序列化库。根据底层streambuf的不同,有些ostream支持查找操作,有些则不支持。此外,有些流写入固定大小的接收器,有些流将增长(fstream、stringstream等)

就我而言,我正在开发一个嵌入式系统,我想非常保护我的资源。我想以一种与流无关的方式,对允许我写入的字节数施加一个任意的最大限制。

我以前写过自定义streambufs(一个包装zlib,一个包装sqliteblob-api)。我想我可以写另一个自定义包装streambuf只是为了这个限制的目的。有人有其他建议吗?如果我必须编写另一个streambuf,有没有一种简单的方法来计算写入底层流的实际字节数?

限制:
无法使用boost(嵌入式平台)
应该适用于任何标准的ostream(fstream、stringstream、cout等)

因此,您需要实现自己的streambuf::overflow,并在达到限制时返回EOF。