在本机 C Windows 程序中显示控制台输出
在使用 WinMain 入口点的 C Windows 程序中,由 std 等函数生成的控制台输出: :cout 默认情况下可能不可见。这是因为图形用户界面 (GUI) 应用程序通常没有与之关联的控制台窗口。
解决方案:
1.将控制台附加到应用程序:
2.将控制台输出重定向到文件:
示例代码使用控制台重定向:
以下代码片段演示了如何将控制台附加到 Windows 程序并将流重定向到它:
void RedirectIOToConsole() { int hConHandle; long lStdHandle; CONSOLE_SCREEN_BUFFER_INFO coninfo; FILE *fp; // Allocate a console for this app AllocConsole(); // Set the screen buffer size for scrolling GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo); coninfo.dwSize.Y = 500; SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize); // Redirect stdout lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); fp = _fdopen(hConHandle, "w"); *stdout = *fp; setvbuf(stdout, NULL, _IONBF, 0); // Redirect stdin lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); fp = _fdopen(hConHandle, "r"); *stdin = *fp; setvbuf(stdin, NULL, _IONBF, 0); // Redirect stderr lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); fp = _fdopen(hConHandle, "w"); *stderr = *fp; setvbuf(stderr, NULL, _IONBF, 0); }
包含标头:
#include "guicon.h"
用法:
#ifdef _DEBUG RedirectIOToConsole(); #endif
以上是如何在本机 C Windows 程序中显示控制台输出?的详细内容。更多信息请关注PHP中文网其他相关文章!