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

C++ 如何计算在任意字符集中编码的字符串中的字符数,c++,C++,给定一个std::string,其中包含以任意但已知的字符集编码的文本。C++中最容易计算字符的方法是什么?它应该能够处理诸如组合字符和Unicode代码点之类的事情 有这样的东西会很好: std::string test = "éäöü"; std::cout << test.size("utf-8") << std::endl; std::string test=“ääöü”; 恐怕这取决于特定的编码方式。如果您使用UTF-8(我真的不明白为什么不应该),您可以使用

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

有这样的东西会很好:

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

恐怕这取决于特定的编码方式。如果您使用UTF-8(我真的不明白为什么不应该),您可以使用

它们似乎有一个功能来实现这一点:

::std::string test = "éäöü";
auto length = ::utf8::distance(test.begin(), test.end());
::std::cout << length << "\n"; // should print 4.
::std::string test=“ääöü”;
自动长度=::utf8::距离(test.begin(),test.end());

::std::cout std::wstring进入思维std::wstring test=TEXT(“ääöü”);很有趣。以前从未使用过
wchar\t
。如果从某个输入流(如文件或stdin)读取字符串,会发生什么情况?ICU在哪方面不够通用?@MagnusHoff我认为ICU只适用于Unicode?仅供参考:我目前正在实现一个web服务框架,该框架具有验证提交文本长度的功能。因此,编码取决于用户想要使用什么。他们中的大多数人将使用UTF-8,但它也应该与其他人一起使用。