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 호출에 적용된다.

스트림을 닫기전까지는 호출한 상태 그대로 적용된다는 것을 명심.

+ Recent posts