【发布时间】:2010-04-20 21:18:56
【问题描述】:
我有一个项目需要我在流中插入一个过滤器,以便根据过滤器修改传出数据。经过一番研究,似乎我想做的是像这样创建一个filtered_streambuf:
template <class StreamBuf>
class filtered_streambuf: public StreamBuf
{ ... }
然后将filtered_streambuf<> 插入我需要过滤的任何流中。我的问题是我不知道在过滤流时需要维护哪些不变量,以确保
- 派生类可以按预期工作。特别是,我可能会发现我已经在其他过滤流缓冲区之上构建了过滤流缓冲区。
- 所有各种流插入器、提取器和操纵器都按预期工作。
问题在于,我似乎无法弄清楚我需要提供什么最小接口才能确保 iostream 具有正常工作所需的内容。
特别是,我是否需要伪造受保护的指针变量的移动?我是否需要一个假数据缓冲区?我可以重写公共函数,根据基本流缓冲区重写它们,还是太简单了?
【问题讨论】: