2012-05-01 29 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