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

StackOverflow https://stackoverflow.com/questions/810677

  •  03-07-2019
  •  | 
  •  

Вопрос

Если файл содержит знак £ (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, расширенные наборы символов и т.д. Для краткости.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top