use*_*713 5 unicode qstring qt
我正在使用Qt5.我有一个QString,其中包含一个长度超过16位的字符U"\ x1D4CC"().即使这只是一个字符,Qt返回该字符串的大小为2.有没有办法显示QString有多少真实字符假设可以有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;
Run Code Online (Sandbox Code Playgroud)
或者您可以将字符串转换为 UCS-4/UTF-32 表示形式并计算 32 位字符的数量。
QVector<uint> ucs4 = str.toUcs4();
qDebug() << ucs4.size();
Run Code Online (Sandbox Code Playgroud)