如何计算编码在任意字符集中的字符串中的字符数

How to count characters in a string encoded in an arbitrary character set

本文关键字:字符 集中 字符集 字符串 任意 何计算 计算 编码      更新时间:2023-10-16

给定一个包含以任意但已知的字符集编码的文本的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.