wcstombs
, _wcstombs_l
와이드 문자의 시퀀스를 멀티바이트 문자의 해당 시퀀스로 변환합니다. 이러한 함수의 더 안전한 버전을 사용할 수 있습니다. wcstombs_s
, _wcstombs_s_l
(을)를 참조하세요.
구문
size_t wcstombs(
char *mbstr,
const wchar_t *wcstr,
size_t count
);
size_t _wcstombs_l(
char *mbstr,
const wchar_t *wcstr,
size_t count,
_locale_t locale
);
template <size_t size>
size_t wcstombs(
char (&mbstr)[size],
const wchar_t *wcstr,
size_t count
); // C++ only
template <size_t size>
size_t _wcstombs_l(
char (&mbstr)[size],
const wchar_t *wcstr,
size_t count,
_locale_t locale
); // C++ only
매개 변수
mbstr
멀티바이트 문자 시퀀스의 주소입니다.
wcstr
와이드 문자 시퀀스의 주소입니다.
count
멀티바이트 출력 문자열에 저장할 수 있는 최대 바이트 수입니다.
locale
사용할 로캘입니다.
반환 값
wcstombs
는 멀티바이트 문자열을 올바르게 변환하는 경우 종결 NULL
(있는 경우)을 제외하고 멀티바이트 출력 문자열에 기록된 바이트 수를 반환합니다. mbstr
인수가 NULL
이면 wcstombs
는 대상 문자열에 필요한 바이트 크기를 반환합니다. 멀티바이트 문자로 변환할 수 없는 와이드 문자가 발견되면 wcstombs
-1 캐스트를 형식 size_t
으로 반환하고 로 설정합니다 errno
EILSEQ
.
설명
wcstombs
함수는 wcstr
이 가리키는 와이드 문자열을 해당하는 멀티바이트 문자로 변환하고 결과를 mbstr
배열에 저장합니다. count
매개 변수는 멀티바이트 출력 문자열에 저장할 수 있는 최대 바이트 수(mbstr
의 크기)를 나타냅니다. 일반적으로 와이드 문자열을 변환할 때 필요한 바이트 수를 알 수 없습니다. 일부 와이드 문자는 출력 문자열에 단일 바이트만 필요합니다. 다른 항목에는 2바이트가 필요합니다. 입력 문자열의 모든 와이드 문자(와이드 NULL
문자 포함)에 대해 멀티바이트 출력 문자열에 2바이트가 있는 경우 결과가 적합합니다.
Windows 10 버전 1803(10.0.17134.0)부터 유니버설 C 런타임은 UTF-8 코드 페이지 사용을 지원합니다. 모든 와이드 문자에 2바이트가 필요하다고 가정하면 충분하지 않을 수 있으므로 변환에 필요한 올바른 크기를 가져오는 데 사용합니다 wcstombs(NULL, wcstr, 0)
. UTF-8 지원에 대한 자세한 내용은 UTF-8 지원을 참조하세요 .
발생 전이나 발생 시 count
와이드 문자NULL
(L'\0')가 발견되면 wcstombs
8비트 0으로 변환하고 중지합니다. 따라서 변환하는 동안 와이드 NULL
문자 문자 mbstr
가 발생하는 경우에만 wcstombs
멀티바이트 문자열이 null로 종료됩니다. wcstr
이 가리키는 시퀀스와 mbstr
이 가리키는 시퀀스가 겹치는 경우 wcstombs
의 동작이 정의되지 않습니다.
mbstr
인수가 NULL
이면 wcstombs
는 대상 문자열에 필요한 바이트 크기를 반환합니다.
wcstombs
는 매개 변수의 유효성을 검사합니다. 이 함수 wcstr
는 NULL
INT_MAX
count
매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기를 호출합니다. 계속해서 실행하도록 허용된 경우 함수가 errno
를 EINVAL
로 설정하고 -1을 반환합니다.
wcstombs
는 로캘 종속 동작에 현재 로캘을 사용하고 _wcstombs_l
은 전달된 로캘을 대신 사용한다는 점을 제외하고는 동일합니다. 자세한 내용은 Locale을 참조하세요.
C++에서 이러한 함수는 보다 최신의 보안 대응 함수를 호출하는 템플릿 오버로드를 갖고 있습니다. 자세한 내용은 안전한 템플릿 오버로드를 참조하세요.
기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.
요구 사항
루틴에서 반환된 값 | 필수 헤더 |
---|---|
wcstombs |
<stdlib.h> |
_wcstombs_l |
<stdlib.h> |
호환성에 대한 자세한 내용은 호환성을 참조하세요.
예시
이 프로그램은 wcstombs
함수의 동작을 보여 줍니다.
// crt_wcstombs.c
// compile with: /W3
// This example demonstrates the use
// of wcstombs, which converts a string
// of wide characters to a string of
// multibyte characters.
#include <stdlib.h>
#include <stdio.h>
#define BUFFER_SIZE 100
int main( void )
{
size_t count;
char *pMBBuffer = (char *)malloc( BUFFER_SIZE );
wchar_t *pWCBuffer = L"Hello, world.";
printf("Convert wide-character string:\n" );
count = wcstombs(pMBBuffer, pWCBuffer, BUFFER_SIZE ); // C4996
// Note: wcstombs is deprecated; consider using wcstombs_s instead
printf(" Characters converted: %u\n",
count );
printf(" Multibyte character: %s\n\n",
pMBBuffer );
free(pMBBuffer);
}
Convert wide-character string:
Characters converted: 13
Multibyte character: Hello, world.
참고 항목
데이터 변환
Locale
_mbclen
, , mblen
_mblen_l
mbstowcs
, _mbstowcs_l
mbtowc
, _mbtowc_l
wctomb
, _wctomb_l
WideCharToMultiByte