mbtowc, _mbtowc_l

멀티바이트 문자를 해당되는 와이드 문자로 변환합니다.

구문

int mbtowc(
   wchar_t *wchar,
   const char *mbchar,
   size_t count
);
int _mbtowc_l(
   wchar_t *wchar,
   const char *mbchar,
   size_t count,
   _locale_t locale
);

매개 변수

wchar
와이드 문자의 주소입니다(wchar_t 형식).

mbchar
바이트 시퀀스(멀티바이트 문자)의 주소입니다.

count
검사할 바이트 수입니다.

locale
사용할 로캘입니다.

반환 값

그렇지 않은 NULL경우 mbchar 유효한 멀티바이트 문자를 가리키는 경우 mbchar 멀티바이트 문자 mbtowc 의 길이를 바이트 단위로 반환합니다. NULL 와이드 문자 null 문자(L'\0')를 가리키는 경우 mbchar 함수는 0을 반환합니다. 가리키는 개체가 mbchar 첫 번째 count 문자 내에서 유효한 멀티바이트 문자를 형성하지 않으면 -1을 반환합니다.

설명

이 함수는 mbtowc 가리키는 mbchar바이트 이하(없는 NULL경우mbchar)를 해당하는 와이드 문자로 변환 count 합니다. mbtowc가 아닌 경우 NULLwchar 결과 와이드 문자를 wchar저장합니다. mbtowc 는 바이트 이상을 MB_CUR_MAX 검사하지 않습니다. mbtowc는 로캘 종속 동작의 현재 로캘을 사용하고 _mbtowc_l은 전달된 로캘을 사용한다는 점을 제외하고 동일합니다. 자세한 내용은 Locale을 참조하세요.

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

요구 사항

루틴에서 반환된 값 필수 헤더
mbtowc <stdlib.h>
_mbtowc_l <stdlib.h>

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

라이브러리

모든 버전의 C 런타임 라이브러리입니다.

예시

// crt_mbtowc.c
// Illustrates the behavior of the mbtowc function

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
    int      i;
    char    *pmbc    = (char *)malloc( sizeof( char ) );
    wchar_t  wc      = L'a';
    wchar_t *pwcnull = NULL;
    wchar_t *pwc     = (wchar_t *)malloc( sizeof( wchar_t ) );
    printf( "Convert a 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 );

    printf( "Convert multibyte character back to a wide "
            "character:\n" );
    i = mbtowc( pwc, pmbc, MB_CUR_MAX );
    printf( "   Bytes converted: %u\n", i );
    printf( "   Wide character: %x\n\n", *pwc );
    printf( "Attempt to convert when target is NULL\n" );
    printf( "   returns the length of the multibyte character:\n" );
    i = mbtowc( pwcnull, pmbc, MB_CUR_MAX );
    printf( "   Length of multibyte character: %u\n\n", i );

    printf( "Attempt to convert a NULL pointer to a" );
    printf( " wide character:\n" );
    pmbc = NULL;
    i = mbtowc( pwc, pmbc, MB_CUR_MAX );
    printf( "   Bytes converted: %u\n", i );
}
Convert a wide character to multibyte character:
   Characters converted: 1
   Multibyte character: 61

Convert multibyte character back to a wide character:
   Bytes converted: 1
   Wide character: 61

Attempt to convert when target is NULL
   returns the length of the multibyte character:
   Length of multibyte character: 1

Attempt to convert a NULL pointer to a wide character:
   Bytes converted: 0

참고 항목

데이터 변환
MultiByteToWideChar
Locale
멀티바이트 문자 시퀀스 해석
_mbclen, mblen, _mblen_l
wcstombs, _wcstombs_l
wctomb, _wctomb_l