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

时间:2015-02-25 10:40:07

标签: c++

给定std::string包含以任意但已知的字符集编码的文本。用C ++计算字符的最简单方法是什么?它应该能够处理组合字符和Unicode代码点之类的事情。

如果有这样的话会很好:

std::string test = "éäöü";
std::cout << test.size("utf-8") << std::endl;

不幸的是,C ++的生活并不容易。 :)

对于Unicode,我看到可以使用ICU库:Cross-platform iteration of Unicode string (counting Graphemes using ICU)

但是有更通用的解决方案吗?

1 个答案:

答案 0 :(得分:0)

我担心这取决于特定的编码。如果你使用UTF-8(我真的不明白为什么你不应该这样做),你可以使用UTF8-CPP

看来他们有这样做的功能:

::std::string test = "éäöü";
auto length = ::utf8::distance(test.begin(), test.end());
::std::cout << length << "\n"; // should print 4.