我有一个UTF-8字符串(从字节数组创建了一个std::string)
我知道编码意味着,例如,如果文本是中文,则size()/ length()不会给我字形的实际数量...
我知道,为了获取每个字形的unicode字符代码,我需要将其转换为wstring(或任何UTF> 8表示形式),然后我可以获取将代表我想要的值的值。
我环顾四周,还没有找到任何简单的方法来使用std c++。
我想念什么?
我正在使用 cocoa 触摸框架在Apple iPhone上编译gcc 4+。
最佳答案
要获取std::string中utf8'字符/代码点'的数量,您可以执行以下操作:遍历字符串,如果 char 在0和127之间,则是一个字节,在194和223之间,则是2字节字符(因此提前),在224和239之间是3字节字符(因此提前),240和244之间是4字节字符(因此提前)。
我猜因为Iphone上的 wchar_t 是32位,因此,如果您确实想要 wstring ,则可以使用UTF8CPP转换为UTF32。 UTF8CPP还可以为您提供字符串的代码点。
但是我不明白为什么您要为Iphone使用C++?看这里:Objective-C Tuesdays: wide character strings