我正在使用Qt5。我有一个QString,其中包含一个字符U" \ x1D4CC" ()超过16位。即使这只是一个字符,Qt返回该字符串的大小为2.有没有办法显示QString有多少真实字符假设可以有32个字符?
答案 0 :(得分:3)
代码值高于65535的Unicode字符使用代理项对存储,即两个连续的QChars
。 QString::length
会返回此字符串中QChar
的数量,该数字可能与字素数(真实字符数)不同。
要计算字素数,可以使用QTextBoundaryFinder类。
QString str = "";
QTextBoundaryFinder finder(QTextBoundaryFinder::Grapheme, str);
int count = 0;
while (finder.toNextBoundary() != -1)
++count;
qDebug() << count;
或者您可以将字符串转换为UCS-4 / UTF-32表示并计算32位字符的数量。
QVector<uint> ucs4 = str.toUcs4();
qDebug() << ucs4.size();