wctomb_s
, _wctomb_s_l
將寬字元轉換為對應的多位元組字元。 版本wctomb
,_wctomb_l
具有CRT中安全性功能中所述的安全性增強功能。
語法
errno_t wctomb_s(
int *pRetValue,
char *mbchar,
size_t sizeInBytes,
wchar_t wchar
);
errno_t _wctomb_s_l(
int *pRetValue,
char *mbchar,
size_t sizeInBytes,
wchar_t wchar,
_locale_t locale
);
參數
pRetValue
位元組數目,或表示結果的代碼。
mbchar
多位元組字元的位址。
sizeInBytes
mbchar
緩衝區的大小。
wchar
要轉換的寬字元。
locale
要使用的地區設定。
傳回值
如果成功,則為零,如果失敗,則為錯誤碼。
錯誤狀況
mbchar |
sizeInBytes |
傳回值 | pRetValue |
---|---|---|---|
NULL |
>0 | EINVAL |
未修改 |
任意 | >INT_MAX |
EINVAL |
未修改 |
任意 | 太小 | EINVAL |
未修改 |
如果發生上述任何錯誤狀況,則會叫用無效的參數處理程式,如參數驗證中所述。 若允許繼續執行,wctomb
會傳回 EINVAL
,且 errno
設為 EINVAL
。
傳回值 EILSEQ
表示透過 參數 wchar
傳遞的值不是有效的寬字元。
備註
wctomb_s
函式會將其 wchar
引數轉換成對應的多位元組字元,並將結果儲存在 mbchar
。 您可以在任何程式的任何點呼叫函式。
如果 wctomb_s
將寬字元轉換成多位元組字元,它會將寬字元的位元組數目 (絕不會大於 MB_CUR_MAX
) 放入 pRetValue
指向的整數。 如果 wchar
是寬字元的 Null 字元 (L'\0'),wctomb_s
會用 1 填入 pRetValue
。 如果目標指標 mbchar
為 NULL
, wctomb_s
請將 0 pRetValue
放入 。 如果目前地區設定中無法轉換, wctomb_s
請將 -1 pRetValue
放入 。
wctomb_s
會針對與地區設定相關的資訊使用目前的地區設定,_wctomb_s_l
與其相同,只不過它會改用傳入的地區設定。 如需詳細資訊,請參閱 Locale。
根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。
需求
常式 | 必要的標頭 |
---|---|
wctomb_s |
<stdlib.h> |
_wctomb_s_l |
<stdlib.h> |
如需相容性詳細資訊,請參閱相容性。
範例
此程式說明 wctomb_s
函式的行為。
// crt_wctomb_s.cpp
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
int i;
wchar_t wc = L'a';
char *pmb = (char *)malloc( MB_CUR_MAX );
printf_s( "Convert a wide character:\n" );
wctomb_s( &i, pmb, MB_CUR_MAX, wc );
printf_s( " Characters converted: %u\n", i );
printf_s( " Multibyte character: %.1s\n\n", pmb );
}
Convert a wide character:
Characters converted: 1
Multibyte character: a
另請參閱
資料轉換
地區設定
_mbclen
、 、 mblen
_mblen_l
mbstowcs
, _mbstowcs_l
mbtowc
, _mbtowc_l
wcstombs
, _wcstombs_l
WideCharToMultiByte