_mbclen,mblen _mblen_l
取得長度並判斷多位元組字元的有效性。
重要
這個 API 不能用於 Windows 執行階段執行的應用程式。如需詳細資訊,請參閱 CRT 函式不支援使用 /ZW。
size_t _mbclen(
const unsigned char *c
);
int mblen(
const char *mbstr,
size_t count
);
int _mblen_l(
const char *mbstr,
size_t count,
_locale_t locale
);
參數
c
多位元組字元。mbstr
多位元組字元位元組序列的位址。count
要檢查的位元組數目。locale
使用的地區設定。
傳回值
_mbclen 會傳回 1 或 2,而定,可能的選取多位元組字元 c 的長度為 1 或 2 位元組。 沒有 _mbclen的錯誤傳回。 如果 mbstr 不是 NULL, mblen 傳回長度,以位元組為單位),多位元組字元。 如果 mbstr 是 NULL 或它指向寬字元), mblen 會傳回 0。 如果 mbstr 所指向的物件不會在第一個字元 count 內的有效多位元組字元, mblen 會傳回– 1。
備註
_mbclen 函式會傳回長度,以位元組為單位),多位元組字元 c。 如果未指向多位元組字元的前導位元組 (如隱含呼叫取決於 c 為 _ismbblead,則 _mbclen 的結果無法預期。
mblen 會傳回位元組長度則為 mbstr ,如果它是有效的多位元組字元並判斷多位元組字元有效性與字碼頁。 mblen 提供比 MB_CUR_MAX 位元組檢查 mbstr或更少的位元組包含,則為 count ,但不是詳細。
輸出值受地區設定的LC_CTYPE 分類設定所影響。如需詳細資訊,請參閱 setlocale 。 這些函式沒有以 _l 後綴的版本在這些地區相依的行為上使用目前的地區設定,而以 _l 後綴版本除了它們會使用傳入的地區設定參數之外運作相同。 如需詳細資訊,請參閱地區設定。
泛用文字常式對應
Tchar.h 常式 |
未定義的 _UNICODE 和 _MBCS |
已定義 _MBCS |
已定義 _UNICODE |
---|---|---|---|
_tclen |
對巨集或內嵌函式的對應 |
_mbclen |
對巨集或內嵌函式的對應 |
需求
程序 |
必要的標頭檔 |
---|---|
_mbclen |
<mbstring.h> |
mblen |
<stdlib.h> |
_mblen_l |
<stdlib.h> |
如需更多關於相容性的資訊,請參閱入門介紹中的 相容性 (Compatibility) 。
範例
// crt_mblen.c
/* illustrates the behavior of the mblen function
*/
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
int i;
char *pmbc = (char *)malloc( sizeof( char ) );
wchar_t wc = L'a';
printf( "Convert wide character to multibyte character:\n" );
wctomb_s( &i, pmbc, sizeof(char), wc );
printf( " Characters converted: %u\n", i );
printf( " Multibyte character: %x\n\n", *pmbc );
i = mblen( pmbc, MB_CUR_MAX );
printf( "Length in bytes of multibyte character %x: %u\n", *pmbc, i );
pmbc = NULL;
i = mblen( pmbc, MB_CUR_MAX );
printf( "Length in bytes of NULL multibyte character %x: %u\n", pmbc, i );
}
Output
Convert wide character to multibyte character:
Characters converted: 1
Multibyte character: 61
Length in bytes of multibyte character 61: 1
Length in bytes of NULL multibyte character 0: 0
.NET Framework 對等用法
不適用。若要呼叫標準 C 函式,請使用 PInvoke。如需更多的資訊,請參閱 Platform Invoke Examples 。
請參閱
參考
strlen、 strlen_l、 wcslen、 wcslen_l、 _mbslen、 _mbslen_l、 _mbstrlen、 _mbstrlen_l