次の方法で共有


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) が返され、errnoEILSEQに設定され、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_lwcstombs_s、または_wcstombs_s_l 関数を使用します。

要件

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

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

関連項目

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