2012-05-01 84 views
1

我刚开始使用Win32 unicode字符串(UTF-16)。有什么办法可以快速获取字符串中任何特定字符的字节索引,因为某些字符可能使用四个字节(从我收集的MSDN中读取的内容)?或者他们都应该被视为每个字符两个字节?Win32 UTF-16字符索引

+5

由于构图,某些角色可能会更大。首先,您需要定义“字符”的含义。你的意思是代码点,或字形或其他? –

+1

我不确定这里使用的一些术语。在SBCS字符串中,每个字节都是一个“字符”。现在使用UTF,每个2字节可能是一个字符,但可能更多,由于编码。找出特定角色的索引的唯一方法是从开始角色开始,并一次遍历一个角色,直到达到目的角色为止? – user1364556

+1

问题是你想完成什么?除非你开发一个Unicode算法(你不应该因为它非常复杂)或者实现一些输入/输出方法(比如从零开始实现编辑控件或文本渲染引擎),你甚至不需要担心“字符”和编码。 [如果你这样做,你做错了什么。](http://utf8everywhere.org/) – ybungalobill

回答

2

CharNext()CharPrev() API可用于在Windows上安全地浏览UNICODE字符串。

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

+0

好吧,我想这将工作正常。谢谢。 – user1364556