Я использую TinyXML для разбора/сборки XML файлов. Теперь, согласно документации, эта библиотека поддерживает многобайтовые наборы символов через UTF-8. До сих пор так хорошо, что я думаю. Но единственный API, который предоставляет библиотека (для получения/установки имен элементов, имен атрибутов и значений,... всего, где используется строка) через std::string
или const char*
. Это заставляет меня сомневаться в моем понимании многобайтовой поддержки набора символов. Как строка, поддерживающая только 8-битные символы, содержит 16-битный символ (если только он не использует кодовую страницу, что бы отрицать утверждение "поддерживает Unicode" )? Я понимаю, что теоретически можно взять 16-битную кодовую точку и разделить ее на 2 символа в std::string
, но это не превратило бы строку std::string
в строку "Unicode", это сделало бы ее недопустимой для большинства целей и, возможно, случайно будет работать при записи в файл и прочитать другую программу.
Итак, может кто-нибудь объяснить мне, как библиотека может предложить "8-битный интерфейс" (std::string
или const char*
) и все еще поддерживает строки "Unicode"?
(Я, вероятно, перепутал терминологию Юникода здесь, извините за любую путаницу, исходящую от этого).