我正在编写一个与 std::ostreams 耦合的对象序列化库。根据底层的 streambuf,一些 ostream 支持查找操作,而一些不支持。此外,一些流写入固定大小的接收器,而一些流会增长(fstream、stringstream 等)。
就我而言,我正在开发一个嵌入式系统,我想非常保护我的资源。我想以与流无关的方式对允许写入的字节数施加任意最大限制。
我之前写过自定义的streambufs(一个包装zlib,一个包装sqlite blob api)。我想我可以为这个限制目的编写另一个自定义包装streambuf。有没有人有任何其他建议?如果我必须编写另一个streambuf,是否有一种简单的方法来计算写入底层流的实际字节数?
限制:
不能使用 boost(嵌入式平台)
应该适用于任何标准 ostream(fstream、stringstream、cout 等)