Comment puis-je déterminer le bloc Unicode d'un caractère, en particulier un Qt QChar?
Question
En Java, j'ai pu déterminer si un caractère particulier était par exemple un Kanji japonais en utilisant Unicode.blockOf (Personnage). Je suis en train de faire la même chose pour un QChar, mais n'a pas pu trouver une fonction utile de le faire. Je me demande si je viens de manquer, ou je devrai rouler ma propre, et si oui - comment
La solution
Il est QChar :: Catégorie mais il ne fournit pas tout ce dont vous avez besoin.
Pour vérifier si un caractère est dans certaine gamme, vous pouvez écrire une fonction comme ceci:
bool inRange(QChar c, ushort b, ushort e) {
return (c.unicode() >= b) && (c.unicode() <= e);
}
Vous pouvez alors l'utiliser comme ceci:
inRange(c, 0x3040, 0x309F); // Hiragana?
Bien sûr, vous pouvez aller plus loin et de le rendre plus abstrait et d'énumérer les gammes:
inRange(c, Range::Hiragana);
Autres conseils
Je ne sais pas s'il y a une meilleure approche spécifique Qt. S'il n'y a pas que vous pouvez essayer d'utiliser ICU plutôt que de rouler votre propre solution.
ICU a à la fois un "C / C ++" la version et une version Java. La version Java de soins intensifs partage en fait un ancêtre commun avec certaines des bibliothèques Java standard pour i18n / l10n, de sorte que la version C / C, nous l'espérons être facile pour vous de comprendre.