共用方式為


mbsrtowcs

將多位元組字元字串轉換成相對應的寬字元字串。更安全版本之這個函式是可使用; see mbsrtowcs.

size_t mbsrtowcs(
   wchar_t *wcstr,
   const char **mbstr,
   sizeof count,
   mbstate_t *mbstate
);
template <size_t size>
size_t mbsrtowcs(
   wchar_t (&wcstr)[size],
   const char **mbstr,
   sizeof count,
   mbstate_t *mbstate
); // C++ only

參數

  • [out] wcstr
    所產生的轉換寬字元字串的地址的位置。

  • [in] mbstr
    間接指向的位置,以指定須轉換的多位元組字元字串。

  • [in] count
    以指定須轉換的字元數目。

  • [in] mbstate
    變數的指標, mbstate_t轉換狀態物件。

傳回值

傳回的字數成功轉換時,不含 null 終止 null 字 (如果有的話),否則為-1 如果發生錯誤。

備註

mbsrtowcs函式轉換從指定的轉換狀態中所包含的多位元組字元字串mbstate,在所指到的值間接mbstr,插入地址的wcstr。轉換將會繼續直到每個字元: 在遇到 null 終止多位元組字元,如果遇到非對應的字元,則之後或下一個字元會超過配額限制包含在count。如果mbsrtowcs之前或當遇到多位元組的 null 字元 ('\ 0') count ,就會發生,它將其轉換為 16 位元 null 終止字元和停駐點。

因此,在寬字元字串wcstr是 null 結尾時,才mbsrtowcs在轉換過程中遇到多位元組的 null 字元。如果所指的序列mbstr和wcstr重疊,行為的mbsrtowcs尚未定義。mbsrtowcs會影響目前的地區設定中的 [LC_TYPE] 類別。

mbsrtowcs函式會不同於mbstowcs _mbstowcs_l由其重新。轉換狀態儲存在mbstate進行後續的呼叫至相同或其他可重新啟動的功能。混合的重新啟動的和即可函式使用時,結果是未定義。例如,應用程式會使用mbsrlen而不是mbslen,如果的後續呼叫mbsrtowcs而不是使用mbstowcs.

如果wcstr引數是NULL, mbsrtombs在目標字串的文字會傳回所需的大小。如果mbstate為 null,內部mbstate_t用轉換狀態。如果字元順序wchar並沒有相對應的多位元組字元表示法,傳回-1 和errno設定為 [ EILSEQ。

如果mbstr是NULL,不正確的參數處理常式會叫用,如所述參數驗證。如果執行,則允許繼續執行,這個函式會將errno到EINVAL ,並傳回-1。

在 C++ 中,這個函式會有較新的、 安全的相對之這個函式會叫用的範本多載。如需詳細資訊,請參閱 安全範本多載

例外狀況

mbsrtowcs函式為多執行緒的安全,只要在目前的執行緒中的函式會呼叫setlocale這個函式執行時, mbstate不是 null。

.NET Framework 對等用法

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

需求

常式

所需的標頭

mbsrtowcs

<wchar.h>

請參閱

參考

資料轉換

地區設定

多位元組字元序列的轉譯工作

mbrtowc

mbtowc _mbtowc_l

mbstowcs _mbstowcs_l

mbsinit