我想编写一个简单的ostream
,它包装一个参数ostream
,并在将流传递给参数流之前以某种方式更改流。转换很简单,如更改字母或删除单词
从ostream
继承的简单类会是什么样的?我应该覆盖哪些方法?
答案 0 :(得分:2)
std::ostream
不是实施过滤的最佳位置。它没有适当的虚函数来让你这样做。
您可能希望编写一个派生自std::streambuf
的类,其中包含一个包裹的std::ostream
(或一个包裹的std::streambuf
),然后使用此{{1}创建一个std::ostream
}。
std::streambuf
有一个虚函数std::streambuf
,您可以覆盖并使用它来改变字节,然后再将它们传递给包装的输出类。
答案 1 :(得分:0)
我一直认为编写专门的流是几乎任何问题的错误方法。输出流通常是程序中的一个终点 - 任何数据处理都应该在您到达流本身之前很久完成。类似地,对于输入流 - 将所需的智能(例如)解析为流中的输入将其置于错误的位置。当然是我的2美分。
答案 2 :(得分:0)
考虑使用Boost.Iostreams