【问题标题】:C++ Output to both console and file?C ++输出到控制台和文件?
【发布时间】:2014-04-18 04:57:24
【问题描述】:

我正在尝试调试一个用 C++ 编写的程序。

当我编写程序的前几个版本时,我包含了几个 cout 语句以打印到控制台以便我可以调试。现在,我的程序已经增长到几千行,包含几百个 cout 语句。我有一个罕见的错误,只有在我运行程序几千次时才会出现,所以即使我的控制台屏幕缓冲区是 9999,我仍然看不到我的所有调试输出。

我知道我可以在每个 cout 语句下创建一个文件流并编写一些代码以输出到一个文件,但由于我有这么多 cout 语句,所以我需要一段时间才能做到这一点。

我是 C++ 新手,所以我只是想在编辑所有源代码之前看看是否有人知道更快的替代方案。谢谢。

编辑:我在 Windows 上运行程序。

【问题讨论】:

  • 如果你在 linux 下运行,一个简单的./myprogram > filename 应该可以工作。
  • 对不起,我忘了提,我在 Windows 上运行程序。现在我希望我在 Linux 上运行它:P
  • 同样的事情在 windows 上也可以使用。
  • 在 Windows 命令行中,myprogram > someFile.txt 有效,前提是您在可执行文件所在的同一目录中运行该命令。
  • myprogram >> someFile.txt 应该在您运行程序“几千次”时附加到同一个文本文件

标签: c++ console-application


【解决方案1】:

我不建议仅仅为此更改源。在 Linux(或 Cygwin)环境中,只需将您的输出通过管道传输到 tee。如果您没有 tee 供您使用,则大约需要 20 分钟来编写。

编辑tee的核心是

FILE * file = fopen("outfilename", "wb");
char buffer[BUFFER_SIZE];
while(fgets(buffer, BUFFER_SIZE, stdin)) {
    fputs(buffer, stdout);
    fputs(buffer, file);
}

【讨论】:

  • 对不起,我忘了在我原来的问题中包含,我实际上是在 Windows 上运行它(不幸的是)。
  • 然后安装 Cygwin。这是一个 Windows 软件包,值得拥有。
猜你喜欢
  • 2018-12-30
  • 1970-01-01
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
  • 2017-03-18
相关资源
最近更新 更多