2012-11-18 2 views
1

다음 코드를 사용하여 Windows 7의 현재 디렉토리를 읽습니다. 현재 디렉토리는 C : \ 特斯塔 인테리어입니다. 현재 로케일은 영어 (EN)입니다. 나는 그것을 제대로 유니 코드 사용하는 기능 이후 디렉토리 경로를 읽을 것이라는 생각 getCurrentDirectoryW을 사용 :getCurrentDirectoryW를 사용하면 로케일이 아닌 문자를 읽지 않습니다.

wchar_t w_pcRootLocation[MAX_PATH+100]; 
GetCurrentDirectoryW(MAX_PATH, w_pcRootLocation); 
wcout << w_pcRootLocation << endl; 

MAX_PATH는 WinDef.h에 정의되어 있으며 내가 출력을 인쇄 할 때 (260)

같다 wcout을 사용하여 콘솔에 표시되는 내용은 다음과 같습니다.

C:\ 

한자는 분명히 읽히지 않습니다. 이 문제는 무엇이며 유니 코드의 경로를 올바르게 읽는 방법은 무엇입니까?

감사합니다.

+2

디버거의 코드를 단계별로 실행하면 'GetCurrentDirectoryW'가 정상적으로 작동하는 것을 볼 수 있습니다. 문제는'wcout'입니다. (즉, 한자를 제대로 읽었을 때 문제가 * 쓰여질 때 발생합니다.) –

답변

2

GetCurrentDirectoryW()는 정상적으로 작동 할 가능성이 높습니다. 그것은 문제가있는 다음 비트입니다.

std :: wcout는 "C"로켈을 사용합니다. 코드 페이지 글리프가 보이지 않게하려면 적절하게 조정해야합니다 (imbue()). 자세한 내용은 this SO question을 참조하십시오.