使用 cmd.exe 显示或捕获完整的程序输出



我正在练习在Windows 7上使用Visual Studio 2015编写递归函数。

我使用 cout 来跟踪我的代码进度,但它显示的结果太多,即使我停止程序,我也看不到初始结果......我只能看到中间的输出。

如何查看完整的程序输出?

问题是cmd.exe(Windows commad 提示符)有一个固定大小的缓冲区来显示输出。如果程序写入大量输出,则只会显示最后 N 行,其中 N 是缓冲区大小。

您可以通过多种方式避免此问题:

    写入
  1. 文件,而不是写入std::cout 。您的所有输出都将捕获在文件中,您可以在您选择的文本编辑器中阅读该文件。

  2. 将标准输出重定向到文件。按my_prog.exe > output.log运行程序,输出将被重定向到 output.log

  3. 通过管道将输出传输到 more 命令,一次显示一个屏幕:my_prog.exe | more

  4. 增加cmd.exe缓冲区大小。如果右键单击命令窗口的标题栏,则可以选择"属性"菜单选项。在"布局"选项卡中,你将看到一个名为"屏幕缓冲区大小"的部分。将"高度"更改为更大的值,您将能够捕获这么多行输出。请注意,这有点不可靠,因为您通常不知道在执行程序之前它将输出多少行。使用文件的其他方法之一通常是更好的解决方案。

请注意,这对您的C++程序来说并不是真正的问题。能够在标准输出流上产生大量输出是完全合理的。最好的解决方案是将输出重定向或管道到文件的解决方案。这些操作在大多数明智的平台(以及Windows)上都可用,并且完全可以执行您需要的操作,而无需更改程序以写入文件。

我不确定是否理解您的问题,也许您应该将输出写入文件而不是标准输出?然后你会看到所有的结果

从命令行运行应用程序并将输出重定向到文件:

yourapp.exe > yourapp.log

最新更新