c++ - 什么可以解释 std::cout 不显示任何内容?

标签 c++ visual-studio qt qt-creator cout

无论出于何种原因,std::cout 不会在我的应用程序中显示任何内容。下面是我的开发环境的描述。

我正在使用 Qt Creator 开发一个 Qt 应用程序。由于无法从我的工作站 (XP64) 启动 Qt Creator,我目前正在使用 Visual Studio 2008 和 Qt 插件(通过导入 .pro 项目文件)开发它。一切似乎都很好,并且应用程序正常工作。

在某些情况下(取决于命令行参数),我不想启动 HIM,只是为了在 CLI 中显示几句话(例如命令行所需的参数)。

我没有收到任何错误,但没有显示任何内容。 我确信运行的相应代码是(经典)以下:

std::cout << "is this going to be displayed ?" << std::endl;

你知道为什么什么都没有显示吗?

最佳答案

在 Windows 上,程序通常构建为 SUBSYSTEM:WINDOWS application or as SUBSYSTEM:CONSOLE .

使用 SUBSYSTEM:CONSOLE 构建的程序应为文本模式应用程序。对于这种类型的应用程序,stdout 和 stderr 会打印到您启动它们的控制台,并在必要时创建一个新控制台。

相比之下,SUBSYSTEM:WINDOWS 应用程序不需要控制台。您仍然可以写入 stdout 和 stderr,但它们通常不会去任何地方。您可以使用 AllocConsole创建要打印到的控制台,但这将始终打印到新创建的控制台窗口,而不是您启动程序的控制台窗口。

SUBSYSTEM:WINDOWS 应用程序的一个技巧是,即使没有控制台,您仍然可以管道 stdout 和 stderr。要管道标准输出,您可以这样做:

YourApplication.exe > output.txt

或者如果你有 cat(或等效的):

YourApplication.exe | cat

还要注意,SUBSYSTEM:WINDOWS 应用程序和 SUBSYSTEM:CONSOLE 应用程序之间并没有任何区别,只是 Windows 在创建进程时如何处理它们。 (您可以在 SUBSYSTEM:CONSOLE 应用程序中创建窗口。)You therefore can easily switch between SUBSYSTEM types (例如,使用 SUBSYSTEM:CONSOLE 进行调试构建,使用 SUBSYSTEM:WINDOWS 进行发布)。

关于c++ - 什么可以解释 std::cout 不显示任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2627900/

相关文章:

visual-studio - Visual Studio 2013 更新 4 是否包括之前的更新 1、2 和 3?

c# - 关于界面组织 Visual Studio 项目的最佳实践是什么?

Qt5.7 QML QtQuick;如何为桌面和 Android 构建可滚动和可编辑的 TextArea

android - 在 Windows 中为 android 编译 protobuf 2.6.1

c++ - 在 C++ 中部署文本文件

c++ - 如何截断前几个字符字符数组 C++

c++ - 为什么在这种情况下要构造类模板的成员函数?

c++ - 在 C++ 中显示访问冲突的错误

C++ 数学问题和 5/4*pi 与 5*pi/4

c++ - Qt 是否有气球小部件(弹出窗口指向其父级)?