给定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)
但是有更通用的解决方案吗?
答案 0 :(得分:0)
我担心这取决于特定的编码。如果你使用UTF-8(我真的不明白为什么你不应该这样做),你可以使用UTF8-CPP。
看来他们有这样做的功能:
::std::string test = "éäöü";
auto length = ::utf8::distance(test.begin(), test.end());
::std::cout << length << "\n"; // should print 4.