Какой формат utf должен повысить возврат wdirectory_iterator?

Если файл содержит знак £ (фунт), то 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

1 ответ

Решение

Кодировка для широких букв (wchar_t объекты) зависит от реализации. Чтобы сработало второе утверждение (т. Е. L"знак фунта £"), вам, вероятно, потребуется изменить базовый язык. По умолчанию используется буква "C", которая не знает о символе фунта. Шестнадцатеричное значение успешно, так как это не требует сопоставления глифа со значением в определенной кодировке.

Примечание: для краткости я пропускаю точную формулировку стандартного wrt wchar_t, расширенных наборов символов и т. Д.

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