获取QString长度(以字符为单位,而不是字节)
Get QString length (in characters, not bytes)
我需要得到实际的字符计数(不是字节计数),类似于在V8中获得字符串长度时的输出。
这对于Twitter来说是必要的,无论使用哪种语言,它都是按字符数计算的,即使是UTF-8(它不按字节长度计算)。
,
在chrome/chromium js控制台,或在nodejs:
> "Schöne Grüße".length
< 12
在Qt 4.8.2中,尝试QString someStr = "Schöne Grüße"; cout << someStr.length()
将输出15,这不是我的目标。
如果你真的想计数字素簇(即用户感知的字符)而不是代码单元,你需要QTextBoundaryFinder
。下面是一个使用示例:
#include <iostream>
#include <QTextBoundaryFinder>
#include <QString>
int main()
{
const QString s=QString::fromUtf8(u8"abcU00010139defU00010102g");
std::cout << "String: "" << s.toStdString() << ""n";
std::cout << "Code unit count : " << s.length() << "n";
QTextBoundaryFinder tbf(QTextBoundaryFinder::Grapheme, s);
int count=0;
while(tbf.toNextBoundary()!=-1)
++count;
std::cout << "Grapheme cluster count: " << count << "n";
}
输出:String: "abc def g"
Code unit count : 11
Grapheme cluster count: 9
我认为您需要使用特定的fromUtf8
静态方法来构建它:
QString s = QString::fromUtf8("Schöne Grüße");
相关文章:
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- 获取嵌套 stl 容器的大小(以字节为单位)
- 常量"C"占用的空间(以字节为单位)
- C++ 中 STL 中迭代器的大小(以字节为单位)是多少
- 有人知道可以使用 c++ 以字节为单位编码 asm 字符串的任何东西吗?
- 如何以字节为单位计算mpz_class的长度?
- 获取C++模板参数包的总大小(以字节为单位)
- C++/C:Char[]的前缀长度(以字节为单位)(二进制/十六进制)
- visual 在指向缓冲区(字符串 " ")的空指针上使用 sizeof() C++ 以获得以字节为单位的大小?
- 如何获得以字节为单位的UTF-16LE字符串的大小
- 为什么 C/C++ "Hello World" 以千字节为单位?
- C++字符串长度(以字节为单位)
- 解码像 FAST 这样的数据协议的快速方法是什么,其中数据以字节为单位编码,并将位作为存在标志
- 解压缩加密文件(以字节为单位)
- 在 boost::multi_array 中以字节为单位表示步幅
- 省略号函数参数的大小(以字节为单位)
- C++获取EOL的大小(以字节为单位)
- 在openMPI中向进程发送数据(以字节为单位)的最佳方式
- 获取矢量的大小(以字节为单位)
- 如何将数组限制在特定的大小(以千字节为单位)