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

时间:2016-04-28 08:21:37

标签: c++ visual-studio recursion

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

yourapp.exe > yourapp.log