1. 코드
#include <iostream>
#include "windows.h"
using namespace std;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow)
{
AllocConsole(); // 새로운 콘솔 창 생성
FILE* pStreamOut = nullptr;
freopen_s(&pStreamOut, "CONOUT$", "w", stdout);
cout << "HELLO" << endl;
Sleep(1000);
cout << "Bye" << endl;
Sleep(1000);
fclose(pStreamOut);
FreeConsole();
}
AllocConsole() 함수로 새로운 콘솔 창 생성
이후 freopen_s으로 표준 출력을 새로 생긴 pStreamOut이라는 콘솔 스트림으로 리디렉션 해줘야함
2. freopen_s 함수 시그니처
errno_t freopen_s(
FILE** stream, // 리디렉션된 스트림의 포인터를 저장할 변수
const char* filename, // 새로운 출력 대상 (파일 경로 또는 특수 장치 이름)
const char* mode, // 파일 열기 모드 ("r", "w", "a" 등)
FILE* old_stream // 기존 표준 스트림(stdout, stdin, stderr 등)
);
old_stream의 stdout으로 리디렉션될 출력은 std::cout 및 printf 호출에 적용된다.
스트림을 닫기전까지는 호출한 상태 그대로 적용된다는 것을 명심.