質問

ネイティブnode.jsモジュールでのUnicode文字列処理にICUを使用することを検討しています。 v8::String (によると これらのドキュメント)この目的のためにC ++ APIはありません。

私の知る限り、v8はUTF-16を期待しています ExternalStringResource 他のAPIなので、UTF-16処理にICUを使用したいと思います。
私は具体的に必要です:

  • UTF-16文字列の文字(16ビットコードユニットだけでなく)を反復
  • UTF-16文字列に含まれる文字(16ビットコードユニットだけでなく)を伝えます

だから私はICUのドキュメントを見て、 UnicodeStringCharacterIterator クラス。でも、 UnicodeString 持っていません fromUTF16 方法、のみ fromUTF8fromUTF32.

私が確信していない他のことは、 UnicodeString コンストラクターは私がそれを与えるデータをコピーしますか?私は 非常に好ましい 不変のオブジェクトを使用して作業するだけでコピー操作を実行しないようにするゼロコピーアプローチを使用するには、私が指すバッファーを使用するだけです。

また、使用できるかどうかもわかりません UCharIterator (どういうわけか変換できると仮定します UChar* 私のUTF-16文字列から)。

だから私の質問は次のとおりです。 上記の目的にICUを使用するにはどうすればよいですか?

よろしくお願いします!

役に立ちましたか?

解決

UnicodeString デフォルトでStorageにUTF-16を使用します。それがそれだけが持っている理由です fromUTF8fromUTF32: :UTF-16から、変換は行われません。

データをコピーします。所有する文字列です std::string.

使用できます UCharIterator データをコピーしたくない場合。 UChar 16ビット値です. 。あなたはそれをあなたが使用することを好む16ビットのタイプであることを強制することができます UCHAR_TYPE 大きい:

UCHARを#defined(たとえば、char16_t)、またはwchar_tが16ビットの場合はwchar_tである場合は、uchar_typeに定義します。常に署名されていないと想定されています。

どちらも利用できない場合は、UCHARをUINT16_Tに定義します。

これにより、UCHARプラットフォームに依存しますが、16ビットWCHAR_Tタイプのプラットフォームとの直接的な文字列型の互換性が可能になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top