5
我正在使用Qt5。我有一个QString持有一个字符U“\ x1D4CC”()比16位长。即使这只是一个字符,Qt返回这个字符串的大小是2.有没有什么方法可以显示一个QString有多少个实际字符可以假设可以有32个字符?Qt中Utf-32字符的长度
我正在使用Qt5。我有一个QString持有一个字符U“\ x1D4CC”()比16位长。即使这只是一个字符,Qt返回这个字符串的大小是2.有没有什么方法可以显示一个QString有多少个实际字符可以假设可以有32个字符?Qt中Utf-32字符的长度
代码值大于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();