如何计算编码在任意字符集中的字符串中的字符数
How to count characters in a string encoded in an arbitrary character set
给定一个包含以任意但已知的字符集编码的文本的std::string
。用C++计算字符最简单的方法是什么?它应该能够处理诸如组合字符和Unicode代码点之类的事情。
如果有这样的东西就太好了:
std::string test = "éäöü";
std::cout << test.size("utf-8") << std::endl;
不幸的是,使用C++的生活并不总是那么轻松。:)
对于Unicode,我已经看到可以使用ICU库:Unicode字符串的跨平台迭代(使用ICU计算图形)
但是,还有更普遍的解决方案吗?
恐怕这取决于特定的编码。如果你使用UTF-8(我真的不明白为什么不应该使用),你可以使用UTF8-CPP。
他们似乎有这样的功能:
::std::string test = "éäöü";
auto length = ::utf8::distance(test.begin(), test.end());
::std::cout << length << "n"; // should print 4.
相关文章:
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 字符串-C++后显示的随机字符
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 如何在C++中从字符串中分割字符
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 指向指向字符数组的指针数组的指针
- 如何用转义符替换字符串中的所有特殊字符
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 比较字符数组
- 我是否不正确地集中了这些字符数组?
- 如何从数据集中读取特定的字符列
- 在 C/C++ scanf() 扫描集中指定 ']' 字符
- 如何计算编码在任意字符集中的字符串中的字符数
- 尝试解码不在base64字符集中的值
- 访问内联程序集中的动态字符数组(VS2012)
- 将连字符作为元素包含在scanf()的扫描集中,如果它是列表中的第一个字符或最后一个字符
- 是否有任何库可以确定数值是否可以转换为特定字符集中的有效、可打印且有意义的字符