如何在c ++中监视流

时间:2010-11-20 01:07:10

标签: c++ debugging parsing stream iostream

通常在c ++中编写文件编写器或解析器时,我希望在编写/读取时监视编写器/解析器在文件中的进度。为此,我正在考虑实现类似的东西:

ostream_monitor my_monitor(&my_output_stream, &cout);
my_monitor << my_variable;

这会产生将my_variable输出到my_output_stream,也输出到cout的效果,所以我可以看到它。

同样,拥有相同的输入版本会很好:

istream_monitor my_monitor(&my_input_stream, &cout);
my_monitor >> my_variable;

这将读取my_input_stream的下一个标记,并使用它来设置my_variable,但也输出任何读取字符到cout,所以我可以看到它被读取的流。

我可以继续尝试创建std :: istream和std :: ostream的子类来执行此操作,但对于可能有用或可能没用的调试工具来说,似乎可能有很多工程。因此我被要求提出:

您如何通过文件监控解析器的进度?我有兴趣听到任何看起来比上面的解决方案更简单的解决方案。

1 个答案:

答案 0 :(得分:1)

似乎像boost.IOStreams'tee_device,可能还有tee_filter,可用于快速实现我在上面描述的内容:How can I compose output streams, so output goes multiple places at once?