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 でない場合destination にdestination 格納されています。 今回の関数呼び出しでは 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 出力文字が必要な場合は、次の呼び出しstate
mbrtoc16
でdestination
次の UTF-16 文字を格納するように値が設定されます。 mbrtoc32
関数は同一ですが、出力は UTF-32 文字として格納されます。
null の場合source
、これらの関数は、for 、 ""
(空の null で終わる文字列)source
、および 1 for destination
max_bytes
の引数NULL
を使用して行われた呼び出しと同等の値を返します。 destination
と max_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
フィードバック
https://aka.ms/ContentUserFeedback。
近日公開予定: 2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub イシューを段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、以下を参照してください:フィードバックの送信と表示