mbrtoc16, mbrtoc32

文字列内の最初の UTF-8 マルチバイト文字を等価の UTF-16 または UTF-32 の文字に変換します。

構文

size_t mbrtoc16(
   char16_t* destination,
   const char* source,
   size_t max_bytes,
   mbstate_t* state
);

size_t mbrtoc32(
   char32_t* destination,
   const char* source,
   size_t max_bytes,
   mbstate_t* state
);

パラメーター

destination
変換する UTF-8 マルチバイト文字と等価の char16_t または char32_t 文字へのポインター。 null の場合、関数では値を格納しません。

source
変換する UTF-8 マルチバイト文字列へのポインター。

max_bytes
変換する文字を検査する source 内の最大バイト数。 この引数は、1 とバイト数の間の値である必要があります。これには、null ターミネータを含めメインしますsource

state
mbstate_t UTF-8 マルチバイト文字列を 1 つ以上の出力文字に解釈するために使用される変換状態オブジェクトへのポインター。

戻り値

成功した場合、次の条件のうち、現在の state 値の場合に当てはまる最初の値を返します。

Value 状態
0 変換元sourceの次max_bytesの文字以下は、null ワイド文字 (null でない場合destinationに格納される値) に対応します。

state は初期のシフト状態です。
1 以上、 max_bytes以下 返される値は、正しいマルチバイト文字を完成するのに必要な source のバイト数です。 変換されたワイド文字が null でない場合 destination は格納されます。
-3 関数の前回の呼び出しによって生成された次のワイド文字は、null でない場合destinationdestination格納されています。 今回の関数呼び出しでは source のバイトは使用されません。

複数のワイド文字を表す必要がある UTF-8 マルチバイト文字 (サロゲート ペアなど) をポイントすると source 、次の state 関数呼び出しで余分な文字が書き出されるように値が更新されます。
-2 max_bytes のバイトは不完全ですが、有効な可能性がある UTF-8 マルチバイト文字を表します。 destinationに値は格納されません。 この結果は max_bytes がゼロの場合に発生することがあります。
-1 エンコーディング エラーが発生しました。 次 max_bytes のバイト数以下は、完全で有効な UTF-8 マルチバイト文字には影響しません。 destinationに値は格納されません。

EILSEQ が格納され errno 、変換状態の値 state が指定されていません。

解説

この関数は mbrtoc16 、最初の完全な有効な UTF-8 マルチバイト文字を検索するために最大 max_bytes バイトを source 読み取り、同等の UTF-16 文字 destinationを . サロゲート ペアなど、文字に複数の UTF-16 出力文字が必要な場合は、次の呼び出しstatembrtoc16destination次の UTF-16 文字を格納するように値が設定されます。 mbrtoc32 関数は同一ですが、出力は UTF-32 文字として格納されます。

null の場合source、これらの関数は、for 、 "" (空の null で終わる文字列)source、および 1 for destinationmax_bytesの引数NULLを使用して行われた呼び出しと同等の値を返します。 destinationmax_bytes に渡した値は無視されます。

null でない場合 source 、関数は文字列の先頭から開始し、最大 max_bytes バイト数を調べて、シフト シーケンスを含む、次の UTF-8 マルチバイト文字を完了するために必要なバイト数を決定します。 検査したバイトの中に正しくかつ完全な UTF-8 マルチバイト文字が含まれる場合、関数では、その文字を等価の 16 ビットまたは 32 ビットの 1 つまたは複数のワイド文字に変換します。 null でない場合 destination 、関数は最初の (場合によってはのみ) 結果文字を宛先に格納します。 追加の出力文字が必要な場合は、値が設定 stateされ、後続の関数の呼び出しで余分な文字が出力され、値 -3 が返されます。 出力文字がこれ以上必要ない場合、 state は初期のシフト状態に設定されます。

UTF-8 以外のマルチバイト文字を UTF-16 LE 文字に変換するには、mbtowc、または_mbtowc_l関数を使用mbrtowcします。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください

必要条件

機能 C ヘッダー C++ ヘッダー
mbrtoc16, mbrtoc32 <uchar.h> <cuchar>

互換性の詳細については、「 Compatibility」を参照してください。

関連項目

データ変換
ロケール
マルチバイト文字シーケンスの解釈
c16rtomb, c32rtomb
mbrtowc
mbsrtowcs
mbsrtowcs_s