我正在编写一个与std :: ostreams耦合的对象序列化库。根据潜在的streambuf,一些ostreams支持搜索操作,而另一些则不支持。此外,一些流写入固定大小的接收器,一些将增长(fstream,stringstream等)。
就我而言,我正在研究嵌入式系统,我希望能够保护自己的资源。我想以与流无关的方式对允许写入的字节数施加任意最大限制。
我之前编写了自定义streambufs(一个包装zlib,一个包装sqlite blob api)。我想我可以编写另一个自定义包装streambuf只是为了限制目的。有没有人有任何其他建议?如果我必须编写另一个streambuf,是否有一种简单的方法来保持写入底层流的实际字节数?
限制:
不能使用boost(嵌入式平台)
应该适用于任何标准的ostream(fstream,stringstream,cout等)
答案 0 :(得分:1)
因此,您需要实现自己的streambuf::overflow
,并在达到限制时返回EOF。