0

我有一个项目需要我在流中插入一个过滤器,以便根据过滤器修改传出数据。经过一番研究,似乎我想做的是像这样创建一个filtered_streambuf:

template <class StreamBuf>
class filtered_streambuf: public StreamBuf
{ ... }

然后将 afiltered_streambuf<>插入我需要过滤的任何流中。我的问题是我不知道在过滤流时需要维护哪些不变量,以确保

  • 派生类可以按预期工作。特别是,我可能会发现我已经在其他过滤流缓冲区之上构建了过滤流缓冲区。
  • 所有各种流插入器、提取器和操纵器都按预期工作。

问题是我似乎无法弄清楚我需要提供的最小接口是什么,以保证 iostream 将具有正常工作所需的内容。

特别是,我是否需要伪造受保护指针变量的移动?我是否需要一个假数据缓冲区?我可以重写公共函数,根据基本流缓冲区重写它们,还是太简单了?

4

1 回答 1

1

Boost.Iostreams可能对您有用。

从文档中:

Boost.Iostreams 有三个目标:

  • 使创建标准 C++ 流和流缓冲区以访问新的源和接收器变得容易。
  • 提供定义过滤器并将它们附加到标准流和流缓冲区的框架。
  • 提供一组现成的过滤器、源和接收器。

我自己几乎没有使用过那个库,所以我不能进一步评论。

于 2010-04-21T00:23:14.283 回答