Share via


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 不是有效的寬字元,則會傳回 errno 值 ( size_t )(-1),設為 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