【问题标题】:Is there a way to catch the stderr and stdout in Visual Studio?有没有办法在 Visual Studio 中捕获标准错误和标准输出?
【发布时间】:2012-04-19 23:32:52
【问题描述】:

有没有办法在 Visual Studio 中捕获标准输出和标准错误?例如,当我使用

cout <<"Hello world!"<< endl;

一个黑色窗口出现又消失。它太快了,我看不到它。 IDE 中有一个输出部分,但它只允许我从构建和其他内容中选择显示输出,但不能选择标准输出。

作弊解决方案可能会调用

system("pause");

但听起来不太对劲。我在选项中搜索,但找不到项目。

有人知道吗?谢谢。我刚开始用VS,之前在Linux上。

【问题讨论】:

标签: c++ visual-studio-2010 command-line ide stdout


【解决方案1】:

不要使用“开始调试”命令,如果要检查输出,请使用“开始不调试”。我一般都是这样处理的。命令提示符窗口将保持打开状态,直到您将其关闭。如果出现崩溃或其他情况,您可以随时将 Visual Studio 重新附加到该进程,或者只使用“开始调试”运行它。

【讨论】:

    【解决方案2】:

    转到项目属性 -> 链接器 -> 系统 -> 将子系统更改为控制台。

    【讨论】:

    • 我更改了它,但黑色窗口不断弹出。我想在哪里看到 VS 中的输出?
    • 输出将在弹出的控制台中。如果你去 Debug -> Start without Debugging,它不会消失。
    • 不工作!此更改后出现链接错误。 unresolved external symbol main。对比 2019,MFC 应用 Signle Document
    • 我已将其设置为控制台,但输出窗口(选择了“显示调试输出”)不包含任何消息。 VS2019
    【解决方案3】:

    在不实际尝试重定向 stdin/err 流的情况下,您可以尝试一些替代方法:

    • 打开命令提示符窗口并 cd 到您的可执行文件目录 将在其中创建,然后从那里运行它。
    • 也许尝试使用类似 std::cin.get();或 std::cin.ignore(std::cin.rdbuf()->in_avail() + 1);而不是 system("pause")。
    • 通过 OutputDebugString 在 Visual Studio 调试器中显示输出

    【讨论】:

    • 这两种方式听起来都不错,但还是谢谢。这不是你的错。大家不觉得这个问题不方便吗?只是好奇。
    • 按照我的回答将子系统更改为控制台。
    • 我知道我错过了一个,Icemans 的评论是正确的。
    猜你喜欢
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 2017-07-21
    • 1970-01-01
    相关资源
    最近更新 更多