函式
<cwchar>

mbsrtowcs

size_t mbsrtowcs (wchar_t* dest, const char** src, size_t max, mbstate_t* ps);
將多位元組字串轉換為寬字元字串
src 指向的多位元組序列轉換為等效的寬字元序列(儲存在 dest 指向的陣列中),直到已轉換 max 個寬字元,或者在多位元組序列 src 中遇到一個空字元(該空字元也會被轉換和儲存,但不計入函式返回的長度中)。

如果成功轉換了 max 個字元,則儲存在 dest 中的結果字串不會以空字元結尾。

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

如果函式轉換了整個多位元組字串(直到找到空字元),並且 dest 不是空指標,則函式將 src 設定為空指標值,並保證結果狀態為初始轉換狀態。

此函式的行為取決於所選LC_CTYPEC locale 的類別。

這是 mbstowcs (<cstdlib>) 的可重入版本。

引數

dest
指向一個wchar_t陣列的指標,該陣列足夠長,可以儲存一個包含 max 個寬字元的字串。
如果這是一個空指標,函式不會儲存結果字串,但仍會計算 src 中有多少位元組構成一個有效的字串(在這種情況下,max 引數被忽略)。
src
指向待解釋的 C 多位元組字串的指標(一個間接指標)。
如果轉換提前停止,函式會修改此值,使其指向最後一個被轉換的多位元組字元之後的位置;如果函式到達了終止空字元,則此值會被修改為 null 指標。
max
要寫入 dest 的最大寬字元數。
size_t 是一個無符號整數型別。
ps
指向一個定義轉換狀態的 mbstate_t 物件的指標。

返回值

寫入到 dest 的寬字元數(不包括可能有的終止空字元)。

如果在轉換過程中,函式遇到了一個不能構成有效多位元組字元的位元組序列,函式會設定 errnoEILSEQ並返回(size_t)-1src 將指向第一個無法轉換的位元組。

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

另見