[英]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.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.