Использование getCurrentDirectoryW не читает нелокальные символы

Я использую следующий код для чтения текущего каталога в Windows 7. Текущий каталог - C:\特斯塔敌人. Текущий язык - английский (EN). Я использовал 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(), вероятно, работает нормально. Это следующий бит, который имеет проблемы.

std:: wcout будет использовать локаль "C". Вам нужно будет настроить (imbue()) это соответственно для отображения ваших глифов из кодовой страницы. Смотрите этот ТАК вопрос для деталей.

Этот вопрос, кажется, решил проблему для wcout...

без вывода широких символов в командную строку

Стоит проверить с помощью отладчика, чтобы убедиться, w_pcRootLocation действительно содержит символы.

Другие вопросы по тегам