나의질문답

cout 한글 출력 질문있습니다.

예쁜꽃이피었으면 2014. 12. 1. 15:32

http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNO=20&no=946896&ref=946896&page=1


안녕하세요 . cout , wcout을 사용해서 담겨있는 값을 출력해보려고 합니다.

cstring의 경우 wcout으로 출력을 해야 한다고 하더라고요...;

전에는 그래서 wcout으로 하고.

#include <locale> //wcout 유니코드 한글 출력
 
//wcout 유니코드 한글 출력
#ifdef _UNICODE 
#define tcout    wcout 
#else 
#define tcout    cout 
#endif
이런거.. 추가해서  한글 출력을 했었습니다.
 
출력할 때도
wcout << "strFolderItem => "<< (LPCTSTR)strFolderItem << endl;
이런 식으로 했습니다.
 
그런데 이번에 한글출력이 또 안되길래 같은 방법으로 했는데
16진수?같이 생긴 값만 출력이 됩니다.
 
 
 
소스를 보여드리자면
 

const char * IMAGE_DIR = "C:/Users/h/Desktop/오목눈이";

...

Recurse((LPCTSTR)IMAGE_DIR);

...

 

void Recurse(LPCTSTR pstr){

cout << "1.pstr => "<< pstr<< endl;
 
CString strWildcard(pstr);
cout << "2.CString strWildcard(pstr) => "<< strWildcard << endl;

이런식으로 되어 있고요 . 경로를 출력해보려고 하는데

00B181A0 이렇게 콘솔창에 보입니다.

 

한글이 안나오는 이유는 무엇이고

어떻게 수정해야 하나요?

 

답변 부탁드리겠습니다.




일단 cout/wcout 과 CString 은 호환이 되지 않기 때문에 LPCTSTR 로 타입 캐스팅해서 출력해야 하는건 맞구요,

 

한글이 출력되지 않는것은 로케일 때문인듯 하네요.

 

출력하기 전에 아래 코드 한번 호출해보세요.

 

std::locale::global(std::locale("kor"));



답변감사합니다.

std::locale::global(std::locale("kor"));
 
wcout.imbue(locale("kor")); //wcout 유니코드 한글 출력
 
다 안되네요
 
 
 
두 개의 소스를 합치는 중인데요 (vs2010에서)
 
각각을 실행했을 때는 출력이 잘 됩니다..
 

제가 어떤 걸 보여드리면 이 질문에 대한 다른 답변을 받을 수 있을까요,?

반응형