이 블로그는 http://blog.greenmaru.com으로 이동 하였습니다.
2010년 12월 이후 업데이트는 새로운 블로그를 통해서만 이루어 집니다. 현재 보고 계신 페이지는 2011년 12월에 없어질 예정 이므로, 필요하신 분께서는 새로운 블로그로 링크를 변경해 주시기 바랍니다.
번거롭게 해 드려 죄송합니다.
<greenb>

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. Subject : Console에서 Unicode출력 (VC++)

    Tracked from 그린마루 2010/12/05 17:23 delete

    흔한 경우는 아니지만, Console 프로그램을 개발할때 Unicdode를 사용하는 경우, std::wcout으로 출력하면 화면에 한글이 표시되지 않는다. 한참 해맨끝에 얻은 결론은... 깔끔하게 Unicode를 쓰지말자!!! ....-_-; 그래도 꼭 써야만 한다면(세상일이 다 내 마음대로 되진 않는다ㅠㅠ) imbue함수를 통해 locale을 지정해 준다. locale imbue( const locale& _Loc ); _Loc: A local s..

Comment List

  1. BlogIcon 고명진 2012/01/10 23:26 address / modify or delete / reply

    큰 최고야, 당신은 날 계몽있다

  2. BlogIcon 김성환 2012/01/13 07:51 address / modify or delete / reply

    호랑이도 제 말하면 온다

|  1  | ...  99  |  100  |  101  |  102  |  103  |  104  |