Поиск «реальных» символов (графем) в QString - PullRequest
4 голосов
/ 04 ноября 2011

Допустим, у меня есть QString, которая может состоять из любых символов Юникода, и я хочу перебирать его символы или считать их.Под «символами» я подразумеваю то, что пользователь воспринимает как таковой (примерно эквивалентный «глифам»), а не просто QChars (16-битные символы Юникода).Некоторые «настоящие» символы состоят из нескольких QChar (суррогатные пары; базовый символ + комбинированные метки).Для некоторых объединяющих символов мне может не понравиться нормализация строки для создания составных символов, но это не всегда помогает.

Я пропустил встроенную функцию, которая разбивает QString на "реальные" символы?*

Или, если мне нужно разобрать его самому, это структура (в EBNF) или я что-то упустил?объединяющий символ)

Ответы [ 2 ]

4 голосов
/ 04 ноября 2011

После дополнительных исследований я нашел термин «фактический символ», графема , а вместе с ним класс Qt для нахождения границ графемы: QTextBoundaryFinder .

1 голос
/ 04 ноября 2011

Я не уверен насчет комбинированных меток, но для суррогатных пар я думаю, что вы можете использовать QString :: toUcs4 () , который должен возвращать 32-битное представление Unicode вашей строки.

...