제작 중인 프로젝트에 로그 저장을 ofstream을 이용해 출력하고 있습니다. 그런데 wofstream을 쓰는 것임에도 불구 하고 한글 출력이 안되더군요. 이리저리 구글링 통해 알아보니 locale 설정을 해야 한다고 합니다.

참고 : http://kaistizen.net/EE/index.php/weblog/comments/unicode_hangul_to_stdout/

#include <fstream>
#include <iostream>
#include <time.h>
#include <tchar.h>

using namespace std;

void main()
{
	locale::global(locale("kor"));

	wofstream m_Stream;
	// global을 쓰지 않고 특정 변수만 kor로 설정할 경우 imbue를 사용
	//m_Stream.imbue( locale("kor") );
	m_Stream.open( L"log.txt" );
	
	char strBuildInfo[64];
	time_t now; 
	time( &now );
	
	wcout << L"한글" << endl;

	strftime( strBuildInfo, 64, "Log Build : %Y/%m/%d ( %H:%M:%S )", localtime(&now));

	m_Stream << strBuildInfo << endl;
	m_Stream << L"로그\n";

	m_Stream.close();
}

출력 결과물. 정상적으로 한글이 출력된다.

+ Recent posts