template<typename CharType, typename CodecvtImpl, int CharSize = sizeof(CharType)>
class boost::locale::generic_codecvt< CharType, CodecvtImpl, CharSize >
Geneneric general codecvt facet, variouslessness encodings to UTF-16 and UTF-32 using wchar_t, char32_t and char16_t.
Осуществление должно быть отделено от этого класса, определяющего себя как CodecvtImpl и обеспечить следующих членов
state_type— вид специального объекта, позволяющий хранить промежуточные кэшированные данные, напримерiconv_tдескриптор
state_type initial_state(generic_codecvt_base::initial_convertion_state direction) const- функция члена, создающая начальное состояние
int max_encoding_length() const- максимальная длина, которую представляет одна точка кода Unicode, для UTF-8, например, это 4 от ISO-8859-1 это 1
utf::code_pointto_unicode(state_type &state,char const *&begin,char const *end)- извлекать первую точку кода из текста в диапазоне [начало, конец], в случае начала успеха указывать на следующую последовательность символов, которые будут закодированы в следующую точку кода, в случае неполной последовательности -utf:: неполнаяоболочка должна быть возвращена, а в случае недействительной входной последовательностиutf:: незаконнаяоболочка должна быть возвращена и начало останется неизмененным
utf::code_pointfrom_unicode(state_type &state,utf::code_point u,char *begin,char const *end)— преобразовать точку кода уникодаuв символ seqnece в [начало, конец]. Возврат длины последовательности в случае успехаutf:: неполныйв случае недостаточного места для кодирования точки кодаutf:: незаконныйв случае невозможности выполнения преобразования
Например, реализация кодекла для набора символов latin1/ISO-8859-1
При использовании внешних инструментов для преобразования кодирования state_type полезен для сохранения объектов, используемых для конверсий. Например, icu:: UConverter может быть сохранен в таком состоянии для эффективного использования:
Статья Boost.Locale: boost::locale::generic_codecvt< CharType, CodecvtImpl, CharSize > Class Template Reference раздела может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.