다음을 통해 공유


_mbclen, mblen, _mblen_l_mbclen_l

멀티바이트 문자의 길이를 가져오고 유효성을 확인합니다.

Important

이 API는 Windows 런타임에서 실행되는 애플리케이션에서 사용할 수 없습니다. 자세한 내용은 유니버설 Windows 플랫폼 앱에서 지원되지 않는 CRT 함수를 참조하세요.

구문

size_t _mbclen(
   const unsigned char *c
);
size_t _mbclen_l(
   unsigned char const* c,
   _locale_t locale
);
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 멀티 _mbclen_l 바이트 문자 c의 길이에 따라 1 또는 2를 반환합니다. 함수는 멀티바이트인지 여부에 관계없이 c 항상 UTF-8에 대해 1을 반환합니다. 에 대한 _mbclen오류 반환이 없습니다.

그렇지 않은 NULLmblen _mblen_l 경우 mbstr 멀티바이트 문자의 길이(바이트)를 반환합니다. 및 _mblen_l 함수는 mblen UTF-8에서 올바르게 작동하며 1에서 3 사이의 값을 반환할 수 있습니다. 이 NULL 경우mbstr(또는 와이드 문자 null 문자를 가리키고_mblen_l) mblen 0을 반환합니다. 가리키는 개체 mbstr 는 첫 번째 count 문자 내에서 유효한 멀티바이트 문자를 형성하거나 mblen _mblen_l -1을 반환해야 합니다.

설명

_mbclen 함수는 멀티바이트 문자 c의 길이(바이트)를 반환합니다. 멀티바이트 문자의 리드 바이트를 가리키지 않는 경우 c (암시적 호출 _ismbblead에 의해 결정됨) 결과를 _mbclen 예측할 수 없습니다.

mblen 는 유효한 멀티바이트 문자인 경우 길이 mbstr 를 바이트 단위로 반환합니다. 또한 코드 페이지와 연결된 멀티바이트 문자 유효성도 결정합니다. mblenmbstr에 포함된 count 이하 바이트를 검사하지만 MB_CUR_MAX를 초과하는 바이트는 검사하지 않습니다.

출력 값은 로캘의 LC_CTYPE 범주 설정에 의해 영향을 받습니다. _l 접미사가 없는 이러한 함수의 버전은 이 로캘 종속 동작에 현재 로캘을 사용합니다. _l 접미사 버전은 동일하게 동작하지만 대신 전달된 로캘 매개 변수를 사용합니다. 자세한 내용은 참조 및 로캘을 참조 setlocale 하세요.

_mbclen_mblen_l_mbclen_l 은 표준 C 라이브러리의 일부가 아닌 Microsoft 전용입니다. 이식 가능한 코드를 원하는 곳에 사용하지 않는 것이 좋습니다. 표준 C 호환성을 위해 사용하거나 mbrlen 대신 사용합니다mblen.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.

일반 텍스트 루틴 매핑

Tchar.h 루틴 _UNICODE_MBCS 정의되지 않음 정의된 _MBCS 정의된 _UNICODE
_tclen 매크로 또는 인라인 함수에 매핑 _mbclen 매크로 또는 인라인 함수에 매핑

요구 사항

루틴에서 반환된 값 필수 헤더
_mbclen <mbstring.h>
mblen <stdlib.h>
_mblen_l <stdlib.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

예시

// 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 );
}
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

참고 항목

문자 분류
Locale
멀티바이트 문자 시퀀스 해석
_mbccpy, _mbccpy_l
mbrlen
strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen_mbstrlen_l