函式
<cuchar>

mbrtoc16

size_t mbrtoc16 ( char16_t * pc16, const char * pmb, size_t max, mbstate_t * ps);
將多位元組序列轉換為 16 位字元
pmb 所指向的多位元組字元被轉換為 16 位字元,並存儲在 pc16 指向的位置。函式返回多位元組字元的位元組長度(最大為 max)。

如果__STD_UTF_16__宏被定義,則儲存在 pc16 的結果字元遵循 UTF-16 編碼。

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

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

使用空指標作為 pmb 呼叫該函式也會重置移位狀態,並忽略引數 pc16max(沒有字元儲存在 pc16)。

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

引數

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

返回值

pmb 中用於產生 16 位字元的位元組數。

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

如果多位元組序列需要多於一個char16_t來表示,並且並非所有字元都已被儲存,函式返回(size_t)-3,在將適當的移位字元儲存到 pc16 之後。下一次使用相同的 ps 引數指向與 pmb 相同的地址來呼叫此函式時,將產生表示該多位元組序列所需的char16_t字元序列中的下一個字元。

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

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

請注意,size_t 是一個無符號整數型別,因此任何可能返回的值都不會小於零。

另見