Windows C에서 콘솔 텍스트 출력
Windows에서 실행되는 기본 C 프로그램은 명령줄 인터페이스를 활용하여 콘솔 출력을 표시할 수 있습니다. 그러나 프로그램의 진입점이 WinMain으로 정의된 경우 std::cout과 같은 표준 출력 기능을 사용하여 인쇄된 데이터를 보는 방법이 즉시 명확하지 않습니다.
해결책:
이 시나리오에서는 콘솔 출력을 얻기 위한 여러 접근 방식이 있습니다.
1. 리디렉션 기능 활용:
표준 I/O 스트림을 가로채서 콘솔로 라우팅하는 사용자 지정 리디렉션 기능을 구현합니다. 다음은 Win32 API를 사용하는 예입니다.
guicon.cpp
#include <windows.h> #include <stdio.h> #include <fcntl.h> #include <io.h> #include <iostream> #include <fstream> using namespace std; void RedirectIOToConsole() { int hConHandle; long lStdHandle; FILE *fp; AllocConsole(); GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo); coninfo.dwSize.Y = MAX_CONSOLE_LINES; SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize); lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); fp = _fdopen(hConHandle, "w"); *stdout = *fp; setvbuf(stdout, NULL, _IONBF, 0); lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); fp = _fdopen(hConHandle, "r"); *stdin = *fp; setvbuf(stdin, NULL, _IONBF, 0); lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); fp = _fdopen(hConHandle, "w"); *stderr = *fp; setvbuf(stderr, NULL, _IONBF, 0); ios::sync_with_stdio(); }
그런 다음 이 함수를 프로그램에 포함시키고 표준 출력 함수를 사용하기 전에 호출하세요.
2. 콘솔 출력을 파일로 리디렉션:
또 다른 옵션은 콘솔 출력을 파일로 리디렉션한 다음 텍스트 편집기를 사용하여 볼 수 있는 것입니다. 이는 프로그램의 명령줄을 수정하여 수행할 수 있습니다.
program.exe 1>output.txt 2>&1
이 예에서 표준 출력 및 표준 오류는 "output.txt" 파일로 리디렉션됩니다.
3 . 조건부 컴파일 사용:
프로그램이 특별히 개발 또는 디버깅 환경을 대상으로 하는 경우 조건부 컴파일을 사용하여 필요한 경우에만 콘솔 출력을 포함할 수 있습니다. 예를 들어 콘솔 출력 문을 #ifdef _DEBUG 블록으로 래핑할 수 있습니다.
구현 예:
test.cpp
#include <iostream> #ifdef _DEBUG int main() { std::cout << "Hello, world!" << std::endl; return 0; } #endif
기본적으로 이 프로그램은 아무것도 출력하지 않습니다. 그러나 정의된 _DEBUG 전처리기 매크로로 컴파일하면 "Hello, world!"가 인쇄됩니다. 콘솔로.
위 내용은 WinMain 진입점을 사용하여 Windows C 프로그램에서 콘솔 출력을 표시하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!