Есть ли совместимый с STL и UTF-8 С++ Wrapper для ICU или другая мощная библиотека Unicode
Мне нужна хорошая библиотека Unicode для С++. Мне нужно:
- Преобразования чувствительны к Unicode. Например, сортируйте все строки в режиме без учета регистра и получите их первые символы для индекса. Преобразование различных строк Unicode в верхний и нижний регистр. Разделите текст в разумной позиции - слова, которые будут работать и для китайцев, и для японцев.
- Форматирование чисел, дат в чувствительном к языку пути (должно быть потокобезопасным).
- Прозрачная поддержка UTF-8 (первичное внутреннее представление).
Насколько я знаю, лучшей библиотекой является ICU. Тем не менее, я не могу найти нормальную документацию API для разработчиков с примерами. Также, насколько я понимаю, это не слишком дружелюбно с
современный дизайн на С++, работа с STL и т.д. Вот так:
std::string msg;
unistring umsg.from_utf8(msg);
unistring::word_iterator wi;
for(wi=umsg.words().begin(),n=0;wi!=usmg.words().wi_end(),n<10;++wi,++n)
;
msg=umsg.substr(umsg.words().begin(),wi).to_utf8();
cout<<_("Five 10 words are ")<<msg;
Есть ли хорошая оболочка ICU, совместимая с STL, выпущенная под лицензией Open Source? Предпочтительным является разрешающая лицензия, такая как MIT или Boost, но другие, такие как совместимые с LGPLv2, также в порядке.
Есть ли еще библиотека высокого качества, подобная ICU?
Платформа: Unix/POSIX, поддержка Windows не требуется.
Изменить: К сожалению, я не был зарегистрирован, поэтому я не могу принять ответ. Я сам приложил ответ.
Ответы
Ответ 1
Этот вопрос был задан довольно давно. Не было такой библиотеки.
Итак, я написал С++ дружественную библиотеку Boost.Locale, которая обертывает ICU.
Изменить Теперь часть Boost: см. Документация Boost.Locale
Ответ 2
wxWidgets В инструментах GUI есть несколько довольно классных классов строк и поддержка юникода. Вам не нужно создавать/использовать классы GUI, если вы этого не хотите. Подробнее см. здесь.
Ответ 3
Соответствует ли это законопроекту?
http://www.codeproject.com/KB/string/utf8cpp.aspx