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 マルチバイトナロー文字シーケンスに変換します。 null ポインターでない場合 mbchar 、関数は変換されたシーケンスを指す配列オブジェクトに mbchar格納します。 最大 MB_CUR_MAX バイトが mbcharに格納され、 state は、結果として生成されるシフト状態に設定されます。

null ワイド文字の場合 wchar 、初期シフト状態を復元するために必要なシーケンスが、必要に応じて格納され、その後に null 文字が続きます。 state は初期変換状態に設定されます。 c32rtomb 関数は同一ですが、UTF-32 文字を変換します。

mbchar が null ポインターの場合、動作は、 mbchar の内部バッファーおよび wcharのワイド null 文字を置換する関数の呼び出しと同等です。

state 変換状態オブジェクトにより、この関数とマルチバイト出力のシフト状態を維持するその他の再開可能な関数を続けて呼び出すことが可能になります。 再開可能な関数と再開不可能な関数を混用した場合、結果は未定義です。

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

必要条件

ルーチンによって返される値 必須ヘッダー
c16rtomb, c32rtomb C、C++: <uchar.h>

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

関連項目

データ変換
ロケール
マルチバイト文字シーケンスの解釈
mbrtoc16, mbrtoc32
wcrtomb
wcrtomb_s