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> |