String Win32 UTF-16字符索引

String Win32 UTF-16字符索引,string,winapi,unicode,utf-16,String,Winapi,Unicode,Utf 16,我刚开始使用Win32 unicode字符串(UTF-16)。有什么方法可以快速获取字符串中任何特定字符的字节索引,因为某些字符可能使用四个字节(从我阅读MSDN收集的信息来看)?还是应该将它们都视为每个字符两个字节?和API可用于在Windows上安全地遍历UNICODE字符串 要获取UNICODE字符串的第n个字符,请在循环中调用CharNext()。由于组合的原因,某些字符可能会更大。首先,您需要定义“角色”的含义。你是指代码点、字形还是其他什么?我不确定这里使用的一些术语。在SBCS字符

我刚开始使用Win32 unicode字符串(UTF-16)。有什么方法可以快速获取字符串中任何特定字符的字节索引,因为某些字符可能使用四个字节(从我阅读MSDN收集的信息来看)?还是应该将它们都视为每个字符两个字节?

和API可用于在Windows上安全地遍历UNICODE字符串


要获取UNICODE字符串的第n个字符,请在循环中调用CharNext()。

由于组合的原因,某些字符可能会更大。首先,您需要定义“角色”的含义。你是指代码点、字形还是其他什么?我不确定这里使用的一些术语。在SBCS字符串中,每个字节都是一个“字符”。现在使用UTF,每个2字节可能是一个字符,但由于编码的原因,可能更多。要计算特定字符的索引,唯一的方法是从开始字符开始,一次遍历一个字符,直到到达目标字符为止?问题是您试图实现什么?除非您开发一个Unicode算法(因为它非常复杂,所以不应该这样做)或实现一些输入/输出方法(比如从头开始实现编辑控件或文本渲染引擎),否则您甚至不需要担心“字符”和编码。