人为限制ostream
Artificially limited ostream
我正在编写一个与std::ostreams耦合的对象序列化库。根据底层streambuf的不同,有些ostream支持查找操作,有些则不支持。此外,有些流写入固定大小的接收器,有些流将增长(fstream、stringstream等)
就我而言,我正在开发一个嵌入式系统,我想非常保护我的资源。我想以一种与流无关的方式,对允许我写入的字节数施加一个任意的最大限制。
我以前写过自定义streambufs(一个包装zlib,一个包装sqliteblob-api)。我想我可以写另一个自定义包装streambuf只是为了这个限制的目的。有人有其他建议吗?如果我必须编写另一个streambuf,有没有一种简单的方法来计算写入底层流的实际字节数?
限制:
无法使用boost(嵌入式平台)
应该适用于任何标准的ostream(fstream、stringstream、cout等)
因此,您需要实现自己的streambuf::overflow
,并在达到限制时返回EOF。
相关文章:
- ostream过载时的缓冲区冲洗
- 需要从 istream 和 ostream 派生 iostream
- "ostream &os"有什么用?
- 为什么常量词在重载运算符中不与 ostream 对象一起使用<<?
- 我的运算符重载是否有效<<(流插入)左操作数不是 ostream
- C++表达SFINAE和ostream操纵器
- 在抛出 'std::runtime_error' 的实例后终止调用 what(): Filebuf 和 ostream 的 I/O 错误
- oStream 不打印添加两个 valarray 的结果(使用运算符重载)
- 逗号在重载 ostream 和 istream 在结构中分开
- 避免在人为的重载函数调用中拼写出类型
- 为什么 Clang std::ostream 写一个 std::istream 无法读取的双精度?
- ostream 运算符<< 为获取 STL 容器而过载,传递 std::string 会破坏它?
- 将 ostream 包装在类中并模板化<<运算符
- 如何在C++中编写 ostream 的向量,它接收所有不同的输出流,如 cout、ostringstream 和 ofs
- 为什么在返回 ostream 类时使用引用?
- 将标准输出重定向到ostream
- boost::interprocess::file_lock 与 std::ostream 一起使用时的错误行为
- 重载 ostream << 运算符,指针作为参数,导致输出上的内存地址
- 无法从好友功能访问类的私有成员?"ostream"不是"std"的成员?
- 人为限制ostream