c16rtomb
, c32rtomb
UTF-16 または UTF-32 ワイド文字を UTF-8 マルチバイト文字に変換します。
構文
size_t c16rtomb(
char *mbchar,
char16_t wchar,
mbstate_t *state
);
size_t c32rtomb(
char *mbchar,
char32_t wchar,
mbstate_t *state
);
パラメーター
mbchar
変換された UTF-8 マルチバイト文字を格納する配列へのポインター。
wchar
変換するワイド文字。
state
mbstate_t
オブジェクトへのポインター。
戻り値
配列オブジェクト mbchar
に格納されるバイト数 (シフト シーケンスを含む)。 wchar
有効なワイド文字でない場合は、値 (size_t
)(-1) が返され、errno
はEILSEQ
に設定され、state
の値は指定されていません。
解説
c16rtomb
関数は、UTF-16 LE 文字wchar
を同等の UTF-8 マルチバイトナロー文字シーケンスに変換します。 mbchar
が null ポインターでない場合、関数は変換されたシーケンスを、mbchar
が指す配列オブジェクトに格納します。 最大 MB_CUR_MAX
バイトが mbchar
に格納され、 state
は、結果として生成されるシフト状態に設定されます。
wchar
が null ワイド文字の場合、初期シフト状態を復元するために必要なシーケンスが、必要に応じて格納され、その後に null 文字が続きます。 state
は初期変換状態に設定されます。 c32rtomb
関数は同一ですが、UTF-32 文字を変換します。
mbchar
が null ポインターの場合、動作は、 mbchar
の内部バッファーおよび wchar
のワイド null 文字を置換する関数の呼び出しと同等です。
state
変換状態オブジェクトにより、この関数とマルチバイト出力のシフト状態を維持するその他の再開可能な関数を続けて呼び出すことが可能になります。 再開可能な関数と再開不可能な関数を混用した場合、結果は未定義です。
UTF-16 文字を UTF-8 以外のマルチバイト文字に変換するには、 wcstombs
、 _wcstombs_l
、 wcstombs_s、または_wcstombs_s_l 関数を使用します。
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
c16rtomb , c32rtomb |
C、C++: <uchar.h> |
互換性の詳細については、「互換性」を参照してください。
関連項目
データ変換
ロケール
マルチバイト文字のシーケンスの解釈
mbrtoc16
, mbrtoc32
wcrtomb
wcrtomb_s