代码之家  ›  专栏  ›  技术社区  ›  SuperElectric

如何在c中监视流++

  •  1
  • SuperElectric  · 技术社区  · 14 年前

    通常在用c++编写文件编写器或解析器时,我希望在文件被写入/读取时监视编写器/解析器在整个文件中的进度。为此,我考虑实施如下措施:

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

    这将产生将我的_变量输出到我的_输出流的效果,也输出到cout,所以我可以看到它。

    同样,最好有一个相同的输入版本:

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

    这将从我的输入流读取下一个标记,并使用它设置我的变量,但也将任何读取字符输出到cout,这样我可以在读取流时看到它。

    我可以继续尝试创建std::istream和std::ostream的子类来实现这一点,但对于一个可能有用也可能不有用的调试工具来说,这似乎是一个潜在的大量工程。因此,我被要求:

    如何通过文件监视解析器的进度?我有兴趣听到任何解决方案,似乎比上面的一个更简单的实现。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Community CDub    7 年前

    看起来像boost.IOStreams的tee_设备,可能还有tee_过滤器,可以用来快速实现我上面描述的: How can I compose output streams, so output goes multiple places at once?