c++ - 如何在 C++ 中监视流

标签 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 的子类,但似乎可能需要大量工程来开发一个可能有用也可能没用的调试工具。因此,我被提示要问:

你如何通过一个文件来监控解析器的进度?我有兴趣听听任何似乎比上述解决方案更易于实现的解决方案。

最佳答案

似乎可以使用 boost.IOStreams 的 tee_device 和 tee_filter 来快速实现我上面描述的内容:How can I compose output streams, so output goes multiple places at once?

关于c++ - 如何在 C++ 中监视流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4230676/

相关文章:

JavaScript XML 解析

c++ - 系统地包装纯虚类

C++ 隐藏符号链接(symbolic link)

c++ - VS2013 编译器 : 'CObject::CObject' : cannot access private member declared in class 'CObject'

ruby-on-rails - 为什么我的 rails if/else 得到 NoMethodError

python - 使用Python提取医疗信息

c++ - 模板类型推导

javascript - 如何在 chrome 开发人员工具中对最小化的 javascript 代码进行排序?

debugging - GWT:码头在调试时抛出空指针异常

java - 从多行文本文件中获取整数 vector