函式
<cuchar>

mbrtoc32

size_t mbrtoc32 ( char32_t * pc32, const char * pmb, size_t max, mbstate_t * ps);
將多位元組序列轉換為 32 位字元
pmb 所指向的多位元組字元被轉換為一個 32 位字元,並存儲在 pc32 所指向的位置。函式返回多位元組字元的位元組長度(最多為 max)。

如果__STD_UTF_32__宏被定義,則儲存在 pc32 的結果字元遵循 UTF-32 編碼。

該函式使用(並更新)由 ps 描述的轉換狀態。如果 ps 是一個空指標,該函式使用其自己的內部轉換狀態,該狀態僅在呼叫此函式時根據需要進行更改。

如果獲取的字元等同於空 32 位字元,函式會重置轉換狀態並返回零(在將空 32 位字元儲存到 pc32 之後)。

使用空指標作為 pmb 呼叫該函式也會重置轉換狀態,並忽略引數 pc32max(沒有字元會儲存到 pc32)。

這是char32_t版本的 mbrtowc (<cwchar>)。

引數

pc32
指向一個char32_t.
型別物件的指標。或者,此引數可以是一個空指標,在這種情況下,函式不儲存char32_t轉換結果,但仍返回字元的位元組長度。
pmb
指向多位元組字元第一個位元組的指標。
或者,可以使用空指標呼叫該函式,在這種情況下,函式將轉換狀態(ps 或其內部狀態)重置為初始狀態並返回零。
max
pmb 讀取的最大位元組數。
宏常量 MB_CUR_MAX 定義了在當前區域設定下,一個多位元組字元可以包含的最大位元組數。
size_t 是一個無符號整數型別。
ps
指向一個定義轉換狀態的 mbstate_t 物件的指標。

返回值

pmb 中用於生成 32 位字元的位元組數。

如果這是空 32 位字元,或者 pmb 是一個空指標,則函式返回零(在第一種情況下,空 32 位字元會儲存到 pc32)。

如果多位元組序列需要多於一個char32_t來表示(這在 UTF-32 中是不可能的)且尚未全部儲存,則函式返回(size_t)-3並在 pc32 處儲存適當的移位字元。下一次使用相同的 ps 引數指向與 pmb 相同的地址呼叫此函式,將產生表示該多位元組序列所需的char32_t字元序列中的下一個字元。

如果 pmb 的前 max 個字元構成一個不完整(但可能有效)的多位元組字元,函式返回(size_t)-2(沒有值會儲存到 pc32)。

否則,如果 pmb 指向的字元不構成一個有效的多位元組字元(或其開頭部分),函式返回(size_t)-1並設定 errnoEILSEQ(沒有值會儲存到 pc32)。

請注意,size_t 是一個無符號整數型別,因此可能返回的值沒有一個是小於零的。

另見