Использование 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:\

Китайские иероглифы не читаются, видимо. В чем здесь проблема, и как правильно прочитать путь в Юникоде?

Благодарю.

1

Решение

GetCurrentDirectoryW (), вероятно, работает нормально. Это следующий бит, который имеет проблемы.

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

2

Другие решения

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

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

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

0

По вопросам рекламы [email protected]