Какой формат utf должен увеличить возврат wdirectory_iterator?
Вопрос
Если файл содержит знак £ (pound), то directory_iterator корректно возвращает последовательность символов utf8 \xC2\xA3
wdirectory_iterator использует широкие символы, но все равно возвращает последовательность utf8.Является ли это правильным поведением для wdirectory_iterator, или я использую его неправильно?
AddFile(testpath, "pound£sign");
wdirectory_iterator iter(testpath);
TS_ASSERT_EQUALS(iter->leaf(),L"pound\xC2\xA3sign"); // Succeeds
TS_ASSERT_EQUALS(*iter, L"pound£sign"); // Fails
Решение
Кодировка для широких символов (wchar_t
objects) зависит от реализации.Для второго утверждения (т. е.L "знак фунта стерлингов") для работы вам, вероятно, потребуется изменить базовый язык.По умолчанию используется буква "C", которая не знает о символе фунта.Шестнадцатеричное значение выполняется успешно, поскольку для этого не требуется сопоставление глифа со значением в определенной кодировке.
Примечание:Я пропускаю точную формулировку стандартного w.r.t wchar_t, расширенные наборы символов и т.д. Для краткости.