gpt4 book ai didi

c++ - 如何基于 basic_streambuf 构建 filtered_streambuf?

转载 作者:行者123 更新时间:2023-11-28 08:29:49 25 4
gpt4 key购买 nike

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

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

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

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

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

特别是,我是否需要伪造 protected 指针变量的移动?我是否需要假数据缓冲区?我可以只覆盖公共(public)函数,根据基本流缓冲区重写它们吗,还是太简单了?

最佳答案

Boost.Iostreams可能对你有用。

来自文档:

Boost.Iostreams has three aims:

  • To make it easy to create standard C++ streams and stream buffers for accessing new Sources and Sinks.
  • To provide a framework for defining Filters and attaching them to standard streams and stream buffers.
  • To provide a collection of ready-to-use Filters, Sources and Sinks.

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

关于c++ - 如何基于 basic_streambuf 构建 filtered_streambuf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2678718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com