写一个ostream过滤器?

时间:2010-04-25 09:14:58

标签: c++ iostream

我想编写一个简单的ostream,它包装一个参数ostream,并在将流传递给参数流之前以某种方式更改流。转换很简单,如更改字母或删除单词

ostream继承的简单类会是什么样的?我应该覆盖哪些方法?

3 个答案:

答案 0 :(得分:2)

std::ostream不是实施过滤的最佳位置。它没有适当的虚函数来让你这样做。

您可能希望编写一个派生自std::streambuf的类,其中包含一个包裹的std::ostream(或一个包裹的std::streambuf),然后使用此{{1}创建一个std::ostream }。

std::streambuf有一个虚函数std::streambuf,您可以覆盖并使用它来改变字节,然后再将它们传递给包装的输出类。

答案 1 :(得分:0)

我一直认为编写专门的流是几乎任何问题的错误方法。输出流通常是程序中的一个终点 - 任何数据处理都应该在您到达流本身之前很久完成。类似地,对于输入流 - 将所需的智能(例如)解析为流中的输入将其置于错误的位置。当然是我的2美分。

答案 2 :(得分:0)

考虑使用Boost.Iostreams