2016-04-14 86 views
5

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

回答

3

代码值大于65535的Unicode字符使用代理对存储,即连续两次QCharsQString::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();