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