qt - Qt中Utf-32字符的长度

标签 qt unicode qstring

我正在使用 Qt5。我有一个 QString 包含一个长度超过 16 位的字符 U"\x1D4CC"(𝓌)。即使这只是一个字符,Qt 也会返回这个字符串的大小为 2。有没有办法显示 QString 有多少个实际字符,假设可以有 32 个字符?

最佳答案

代码值大于 65535 的 Unicode 字符使用代理对存储,即两个连续的 QChars . QString::length返回QChar的数量在这个字符串中,它可能与字素(真实字符)的数量不同。

要计算字素数,您可以使用 QTextBoundaryFinder类(class)。

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();

关于qt - Qt中Utf-32字符的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36622981/

相关文章:

c++ - 输出到控制台的随机字符串列表 Qt

c++ - 启动、停止和发送参数以将 Python 脚本与 C++ 应用程序分开的最佳方法?

c++ - 当鼠标经过时 QLabel 改变颜色

vim - 如何在Windows系统上的gVim中添加字体

c++ - 在Qt中获取父类(super class)中子类的名称

c++ - 如何使 QString::fromLocal8Bit 成为默认值?

visual-studio - Visual Studio 2017 : QT Add-in

qt - 用于属性窗口的最佳 Qt Widget?

python - 如何将最相似的 Unicode 字符返回到图像的一部分?

c - 尝试读取宽字符会给出 EOF