Console에서 Unicode 한글출력

흔한 경우는 아니지만, Console 프로그램을 개발할때 Unicdode를 사용하는 경우 -
std::wcout으로 출력하면 화면에 한글이 표시되지 않는다!!!!

한참(!!) 해맨끝에 얻은 결론은...

깔끔하게 Unicode를 쓰지말자는 거다!!!

...-_-;;

...근데 꼭 써야만 한다면;; (세상일이 다 내맘데로 되주진 않는다 ㅠㅠ)
 imbue함수를 통해 locale을 지정해 주면 된다. 

locale imbue( const locale& _Loc );

_Loc: A local string.

Return Value: The Previous locale.

예제:

wcout.imbue(locale("kor", locale::ctype));

 

이 함수는 locale객체를 인자로 받게끔 되 있는데, 
이 locale객체의 첫번째 인자는 구현하려는 locale 문자열을, 두번째 인자(생략가능)는 적용할 범위를 설정한다.

locale::ctype으로 지정하면 문자열만,
locale::all 을 지정하면 통화, 숫자등 모든 출력 값들이 시스템의 국가별 설정에 영향을 받게된다.
(자세한건 MSDN을 참조하자..)

 한줄요약:

UNICODE 콘솔프로그램 만들때 다음 코드를 아무생각 없이-_- 첫째줄에 때려박으면 다 해결된다.

#if defined(UNICODE)
    std::wcout.imbue(locale("kor")); 
#endif
저작자 표시 비영리 변경 금지
Tag // ,

Trackback Address >> http://greenmaru.com/trackback/2 관련글 쓰기

|  1  | ...  89  |  90  |  91  |  92  |  93  |  94  |