无论出于何种原因,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

还要注意,除了Windows在创建进程时如何对待它们之外,SUBSYSTEM:WINDOWS应用程序和SUBSYSTEM:CONSOLE应用程序之间并没有什么区别。 (您可以在SUBSYSTEM:CONSOLE应用程序中创建窗口。)You therefore can easily switch between SUBSYSTEM types(例如,将SUBSYSTEM:CONSOLE用于调试版本,将SUBSYSTEM:WINDOWS用于发行版本)。

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

10-09 06:23