mbstowcs_s _mbstowcs_s_l
將多位元組字元序列轉換為相對應的寬字元序列。 版本的mbstowcs _mbstowcs_l中所述的安全性增強功能與安全性功能,則在 CRT 中。
errno_t mbstowcs_s(
size_t *pReturnValue,
wchar_t *wcstr,
size_t sizeInWords,
const char *mbstr,
size_t count
);
errno_t _mbstowcs_s_l(
size_t *pReturnValue,
wchar_t *wcstr,
size_t sizeInWords,
const char *mbstr,
size_t count,
_locale_t locale
);
template <size_t size>
errno_t mbstowcs_s(
size_t *pReturnValue,
wchar_t (&wcstr)[size],
const char *mbstr,
size_t count
); // C++ only
template <size_t size>
errno_t _mbstowcs_s_l(
size_t *pReturnValue,
wchar_t (&wcstr)[size],
const char *mbstr,
size_t count,
_locale_t locale
); // C++ only
參數
[out] pReturnValue
轉換的字元數。[out] wcstr
產生的轉換後的寬字元字串的緩衝區的位址。[in] sizeInWords
大小的wcstr字組中的緩衝區。[in]mbstr
Null 的一系列的地址終止多位元組字元。[in] count
若要將儲存在寬字元的最大數目wcstr的緩衝區,不包括結尾的 null,或_TRUNCATE。[in] locale
若要使用地區設定。
傳回值
零,如果執行成功、 失敗的錯誤代碼。
錯誤狀況 |
傳回值和errno |
---|---|
wcstris NULL and sizeInWords > 0 |
EINVAL |
mbstr 為 NULL |
EINVAL |
目的緩衝區是太小無法包含轉換後的字串 (除非count是_TRUNCATE。 請參閱下方註解) |
ERANGE |
wcstris not NULL and sizeInWords == 0 |
EINVAL |
如果上述條件,就會發生,如所述,會叫用參數不正確的例外狀況參數驗證 。 如果執行,則允許繼續執行,則函數會傳回一個錯誤碼,並設定errno資料表中的指示。
備註
mbstowcs_s函式將轉換所指的多位元組字元字串mbstr為儲存在緩衝區所指的寬字元wcstr。 轉換會繼續每個字元,直到符合這些條件其中一項:
發現多位元組的 null 字元
遇到無效的多位元組字元
儲存在寬字元數目wcstr緩衝等於count。
目的字串一定是 null 結尾 (甚至是錯誤)。
如果count是特殊值_TRUNCATE,然後mbstowcs_s轉換的格式代碼字串與精神容納到目的緩衝區,同時仍留出空間給 null 結束字元。
如果mbstowcs_s成功轉換來源的字串,它會將大小放置以寬字元為單位的轉換後的字串,包含 null 結束字元,到*pReturnValue (提供pReturnValue不是NULL)。 發生這種情形即使wcstr引數是NULL ,並提供方法,以判斷所需的緩衝區大小。 Note that if wcstr is NULL, count is ignored, and sizeInWords must be 0.
如果mbstowcs_s遇到了無效的多位元組字元,它會將 0 放*pReturnValue,將目的緩衝區設定為空字串,設定errno到EILSEQ,並傳回EILSEQ。
如果所指的序列mbstr和wcstr重疊時,行為的mbstowcs_s尚未定義。
安全性提示 |
---|
最好的wcstr和mbstr不會重疊,且該count正確地反映出要轉換的多位元組字元的數目。 |
mbstowcs_s使用目前的地區設定的任何地區設定相關的行為。 _mbstowcs_s_l是一樣的不同之處在於它所使用的地區設定中傳遞。 如需詳細資訊,請參閱 地區設定。
在 C++ 中,使用這些函式已經過簡化的樣板的多載 ; 多載可以自動推斷緩衝區長度 (而不必指定 size 引數),它們可以自動取代較舊的、 不安全的函式同事安排更新的安全。 如需詳細資訊,請參閱 安全範本多載。
需求
常式 |
所需標頭 |
---|---|
mbstowcs_s |
<stdlib.h> |
_mbstowcs_s_l |
<stdlib.h> |
其他相容性資訊,請參閱相容性在簡介中。
.NET Framework 對等用法
不適用。若要呼叫標準的 c 函式,使用PInvoke。如需詳細資訊,請參閱平台叫用範例。