다음을 통해 공유


wcrtomb

와이드 문자를 멀티바이트 문자 표현으로 변환합니다. 이 함수의 더 안전한 버전을 사용할 수 있습니다. 를 참조하세요 wcrtomb_s.

구문

size_t wcrtomb(
   char *mbchar,
   wchar_t wchar,
   mbstate_t *mbstate
);
template <size_t size>
size_t wcrtomb(
   char (&mbchar)[size],
   wchar_t wchar,
   mbstate_t *mbstate
); // C++ only

매개 변수

mbchar
멀티바이트로 변환된 결과 문자입니다.

wchar
변환할 와이드 문자입니다.

mbstate
mbstate_t 개체에 대한 포인터입니다.

반환 값

변환된 멀티바이트 문자를 표시하는 데 필요한 바이트 수를 반환하고, 오류가 발생하면 -1을 반환합니다.

설명

wcrtomb 함수는 mbstate에 포함된 지정한 변환 상태부터 시작하여 와이드 문자를 wchar에 포함된 값에서 mbchar로 표시되는 주소로 변환합니다. 반환 값은 해당 멀티바이트 문자를 표시하는 데 필요한 바이트 수이지만 MB_CUR_MAX바이트까지만 반환됩니다.

mbstate가 null이면 mbchar의 변환 상태를 포함하는 내부 mbstate_t 개체가 사용됩니다. 문자 시퀀스에 wchar 해당 멀티바이트 문자 표현이 없으면 -1이 반환되고 errno 해당 문자가 로 설정 EILSEQ됩니다.

함수는 wcrtomb 다시 시작 가능성에 따라 다릅니다wctomb_wctomb_l. 같거나 다른 다시 시작 가능 함수에 대한 후속 호출에서는 변환 상태가 mbstate에 저장됩니다. 다시 시작할 수 있는 함수와 다시 시작할 수 없는 함수를 함께 사용할 때는 결과가 정의되지 않습니다. 예를 들어 wcstombs 대신 후속 wcsrtombs 호출을 사용하는 경우 애플리케이션은 wcsnlen 대신 wcsrlen을 사용해야 합니다.

C++에서 이 함수는 해당 최신 보안 버전을 호출하는 템플릿 오버로드를 포함합니다. 자세한 내용은 안전한 템플릿 오버로드를 참조하세요.

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

예외

wcrtomb 함수는 이 함수가 실행 중인 동안 현재 스레드의 함수가 setlocale을 호출하지 않으며 mbstate가 null이면 다중 스레드로부터 안전합니다.

예시

// crt_wcrtomb.c
// compile with: /W3
// This program converts a wide character
// to its corresponding multibyte character.

#include <string.h>
#include <stdio.h>
#include <wchar.h>

int main( void )
{
    size_t      sizeOfCovertion = 0;
    mbstate_t   mbstate;
    char        mbStr = 0;
    wchar_t*    wcStr = L"Q";

    // Reset to initial conversion state
    memset(&mbstate, 0, sizeof(mbstate));

    sizeOfCovertion = wcrtomb(&mbStr, *wcStr, &mbstate); // C4996
    // Note: wcrtomb is deprecated; consider using wcrtomb_s instead
    if (sizeOfCovertion > 0)
    {
        printf("The corresponding wide character \"");
        wprintf(L"%s\"", wcStr);
        printf(" was converted to the \"%c\" ", mbStr);
        printf("multibyte character.\n");
    }
    else
    {
        printf("No corresponding multibyte character "
               "was found.\n");
    }
}
The corresponding wide character "Q" was converted to the "Q" multibyte character.

요구 사항

루틴에서 반환된 값 필수 헤더
wcrtomb <wchar.h>

참고 항목

데이터 변환
Locale
멀티바이트 문자 시퀀스 해석
mbsinit