首页 > 解决方案 > 如何按字符而不是代码单元(UTF-8、UTF-16)计算字符串的长度?

问题描述

我有两个简单的“UTF-8,16”示例来获取文本的长度,如下所示:

// UTF-8
string str = u8"az";
cout << str.length() << endl; // The reulst: 6

// UTF-16
wstring str= L"az"; // Also "u16string"  
cout << str.length() << endl; // The reulst: 4

第一个示例的长度为“6”,第二个示例的长度为“4”,但它们都应该只是“3”,因为它必须作为字符处理。
我知道发生这种情况是因为它通过“代码单元”计算字符串的长度。

我有办法获得正确长度的“UTF-8,16”字符串吗?

标签: c++utf-8utf-16

解决方案


推荐阅读