我有一个项目要求我在流中插入一个过滤器,以便根据过滤器修改传出数据。经过一些研究,似乎我想要做的是创建一个像这样的filtered_streambuf:
template <class StreamBuf>
class filtered_streambuf: public StreamBuf
{ ... }
然后将filtered_streambuf<>
插入我需要过滤的流中。我的问题是,我不知道在过滤流时我需要维护哪些不变量,以确保
麻烦的是,我似乎无法弄清楚我需要提供的最小接口是什么,以保证iostream将具备正常工作所需的内容。
特别是,我是否需要伪造受保护指针变量的移动?我是否需要假数据缓冲区?我可以覆盖公共函数,根据基本streambuf重写它们,还是太简单了?
答案 0 :(得分:1)
Boost.Iostreams可能对您有用。
来自文档:
Boost.Iostreams有三个目标:
- 为了便于创建标准C ++流和流缓冲区 访问新的来源和接收器。
- 为定义过滤器提供框架并将其附加到标准 流和流缓冲区。
- 提供一系列即用型过滤器,来源和 汇。
我自己几乎没用过这个图书馆,所以我不能再评论了。