- std :: string подходит для хранения UTF-8.
- Если вам нужно проанализировать сам текст, понимание UTF-8 не поможет вам, поскольку в Юникоде слишком много вещей, которые не работают на базе кодовых страниц.
Посмотрите на библиотеку Boost.Locale (он использует ICU под капотом):
Это не но он позволяет обрабатывать Unicode правильно и использует std::string
как storeag е.
Если вы ожидаете найти легкую библиотеку Unicode для работы со строками, вы не найдете таких вещей, потому что Unicode не легкий. И даже относительно «простые» вещи, такие как прописные, строчные преобразования или нормализация Юникода, требуют сложных алгоритмов и доступа к базе данных Unicode.
Если вам нужна возможность перебора точек кода (что BTW являются не символов) взглянуть на http://utfcpp.sourceforge.net/
Ответ на комментарий:
1) Найти форматы файлов для файлов, включенных мной
std :: string :: find отлично подходит для этого.
2) обнаружение линии разрыв
Это не простой вопрос. Вы когда-нибудь пытались найти перерыв в китайском/японском тексте? Наверное, не так, как пространство не отделяет слова. Таким образом, обнаружение разрыва линии - тяжелая работа. (Я не думаю, что даже glib делает это правильно, я думаю, что только у pango есть что-то подобное)
И, конечно, Boost.Locale делает это и правильно.
И если вам нужно сделать это только для европейских языков, просто найдите пробелы или знаки препинания, поэтому std::string::find
более точен.
3) символов (или в настоящее время, код точки) подсчета Глядя на utfcpp ТНХ
Символы не являются точками кода, например еврейское слово Шалом - «שָלוֹם» состоит из 4-х символов и 6 Точки Юникода, где для гласных используются два кодовых пункта. То же самое относится к европейским языкам, где характерный характер и представлен двумя кодовыми точками, например: «ü» может быть представлен как «u» и «¨» - два кодовых пункта.
Итак, если вы знаете об этих проблемах, то utfcpp будет в порядке, иначе вы не найдетенайти что-нибудь более простое.
", и если вы ожидаете найти удобную библиотеку Unicode для работы с нитками, вы не найдете таких вещей » Кроме того, я сделал - как связанный, но, увы, его GPL ... « ...И даже «простые» вещи, как прописные, преобразование строчного или нормализация ...» Нам я определенно не нужны такие вещи, как этот Я думаю, что я только заглянуть внутрь моей станд :: строки в: 1) Найти форматы файлов для файлов, включенных мной (так, его определенно «.png» «.jpg», в нижнем регистре, когда я его отправил) 2) Обнаружение разрыва линии 3) Персонаж (или сейчас, кодовая точка) counting Посмотрите на utfcpp thx! – xenthral
@xenthral Посмотрите мой ответ – Artyom
на 2) - да, я знал, что обнаружение разрыва строки может потерпеть неудачу, поэтому я убедился, что в худшем случае se просто сломал все, что мог, так что это не проблема. 3) Упс, я немного потерялся на жаргоне, спасибо за исправление. Подумайте, что utfcpp будет в порядке. – xenthral