函式
<cstdlib>

mbstowcs

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

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

此函式的行為取決於所選 C localeLC_CTYPE 類別。

引數

dest
指向一個足夠大的 wchar_t 元素陣列的指標,該陣列可以容納結果序列(最多 max 個寬字元)。
src
包含要解釋的多位元組字元的 C 字串。
多位元組字元序列應以初始移位狀態開始。
max
要寫入 destwchar_t 字元的最大數量。
size_t 是一個無符號整數型別。

返回值

寫入 dest 的寬字元數量,不包括最終的*終止空字元*。
如果遇到無效的多位元組字元,則返回 (size_t)-1
請注意,size_t 是無符號整數型別,因此返回的任何值都不會小於零。

資料競爭

該函式會訪問 src 指向的陣列,並修改 dest 指向的陣列。
該函式還可能訪問和修改內部狀態物件,如果實現使用了靜態物件(請參閱 mbsrtowcs 以瞭解可使用外部狀態物件的替代方案),這可能導致併發呼叫此函式時出現數據競爭。
併發地更改 locale 設定也可能引入資料競爭。

異常 (C++)

無丟擲保證:此函式不會丟擲異常。

如果 dest 指向的陣列不足以容納轉換後的序列,或者 src 不是以空字元結尾或不包含足夠的位元組來生成 max 個寬字元(或者它沒有以初始移位狀態開始),則會導致*未定義行為*。

另見