2012-05-01 4 views
1

私はWin32ユニコード文字列(UTF-16)から始めています。文字列内の特定の文字のバイトインデックスをすばやく取得する方法はありますか(一部の文字は4バイトを使用する可能性があります)あるいは、それらはすべて文字あたり2バイトとみなされるべきですか?Win32 UTF-16文字インデックス

+5

一部の文字は、構成によってさらに大きくなることがあります。まず、 "キャラクター"が意味するものを定義する必要があります。あなたはコードポイント、グリフ、または他の何かを意味しますか? –

+1

ここで使用されている用語のいくつかについてはわかりません。 SBCS文字列では、各バイトは「文字」でした。今ではUTFを使って、各2バイトは文字かもしれませんが、エンコーディングのために多分もっと多くの文字があります。特定の文字のインデックスを開始文字から開始し、それを1回に1回通過して目的の文字に到達する唯一の方法ですか? – user1364556

+1

質問はあなたが達成しようとしていることですか? Unicodeアルゴリズムを開発しない限り(非常に複雑ではないので)、または(編集コントロールやテキストレンダリングエンジンを最初から実装するような)いくつかの入出力メソッドを実装していない限り、「文字」やエンコーディング[あなたがしたら、あなたは何か間違っているのです。](http://utf8everywhere.org/) – ybungalobill

答えて

2

CharNext()およびCharPrev() APIは、WindowsでUNICODE文字列を安全に移動するために使用できます。

UNICODE文字列のn番目の文字を取得するには、CharNext()をループで呼び出します。

+0

さて、うまくいくと思います。ありがとうございました。 – user1364556

関連する問題