wcstombs_s, _wcstombs_s_l
와이드 문자 시퀀스에 해당 시퀀스의 멀티 바이트 문자로 변환합니다.버전 wcstombs, _wcstombs_l 와 보안 기능 향상에 설명 된 대로 CRT의 보안 기능.
errno_t wcstombs_s(
size_t *pReturnValue,
char *mbstr,
size_t sizeInBytes,
const wchar_t *wcstr,
size_t count
);
errno_t _wcstombs_s_l(
size_t *pReturnValue,
char *mbstr,
size_t sizeInBytes,
const wchar_t *wcstr,
size_t count,
_locale_t locale
);
template <size_t size>
errno_t wcstombs_s(
size_t *pReturnValue,
char (&mbstr)[size],
const wchar_t *wcstr,
size_t count
); // C++ only
template <size_t size>
errno_t _wcstombs_s_l(
size_t *pReturnValue,
char (&mbstr)[size],
const wchar_t *wcstr,
size_t count,
_locale_t locale
); // C++ only
매개 변수
[out] pReturnValue
문자를 변환 합니다.[out] mbstr
그 결과 대 한 버퍼의 주소는 멀티 바이트 문자 문자열 변환.[in]sizeInBytes
바이트의 크기는 mbstr 버퍼입니다.[in] wcstr
변환 하는 와이드 문자열을 가리킵니다.[in] count
와이드 문자를 저장 하 여 최대 수는 mbstr 버퍼가 null 종결 문자를 포함 하지 않는, 또는 _TRUNCATE.[in] locale
사용 하는 로캘.
반환 값
연결에 성공 하면 0, 실패 시 오류 코드입니다.
오류 조건 |
값을 반환 하 고errno |
---|---|
mbstris NULL and sizeInBytes > 0 |
EINVAL |
wcstr가 NULL인 경우 |
EINVAL |
대상 버퍼가 너무 작아 변환 된 문자열을 포함할 수 있습니다 (않는 한 count 입니다 _TRUNCATE. 아래의 설명 부분 참조) |
ERANGE |
이러한 조건 중 하나라도 발생 하는 경우 잘못 된 매개 변수가 예외에 설명 된 대로 호출 될 매개 변수 유효성 검사 .실행 계속 수 있으면 함수가 오류 코드를 반환 하 고 설정 하는 errno 는 표에 표시 된 대로.
설명
wcstombs_s 함수의 와이드 문자 포인터가 가리키는 문자열 변환 wcstr 가 가리키는 버퍼에 저장 된 멀티 바이트 문자에 mbstr.이러한 조건 중 하나가 만족 될 때까지 각 문자에 대 한 변환을 계속 합니다.
와이드 null 문자를 발견 했습니다.
와이드 문자를 변환할 수 없습니다 발생 하는
저장 된 바이트는 mbstr equals를 버퍼링 count.
항상 대상 문자열은 null로 끝나는 (오류 경우에)입니다.
경우 count 특수 값인 _TRUNCATE, 다음 wcstombs_s 여전히 그대로 두고 공간에 null 종결자에 대 한 대상 버퍼에 맞게 최대한 will 문자열로 변환 합니다.
경우 wcstombs_s 성공적으로 원본 문자열 변환 크기 (바이트)에 null 종결자를 포함 하 여 변환 된 문자열을 배치 *pReturnValue (제공 pReturnValue 수 없습니다 NULL).이런 경우에는 mbstr 인수가 NULL 및 필요한 버퍼 크기를 결정할 수 있습니다.Note that if mbstr is NULL, count is ignored.
경우 wcstombs_s 와이드 문자는 멀티 바이트 문자를 변환할 수 없습니다. 발생 한 0 배치 *pReturnValue, 빈 문자열로 설정 하는 대상 버퍼, 설정 errno 에 EILSEQ를 반환 하 고 EILSEQ.
시퀀스 가리키는 경우 wcstr 및 mbstr 겹치는 동작을 wcstombs_s 는 정의 되지 않습니다.
보안 정보 |
---|
확인 wcstr 및 mbstr 서로 중첩 되지 않습니다 및 count 올바르게 변환 하려면 와이드 문자 수를 반영 합니다. |
wcstombs_s현재 로케일에 대 한 모든 로캘 종속 동작을 사용합니다. _wcstombs_s_l동일 wcstombs 대신 전달 된 로캘을 사용 하는 점을 제외 하 고.자세한 내용은 로캘를 참조하십시오.
C + +에서이 함수를 사용 하 여 템플릿 오버 로드에 단순화 됩니다. 오버 로드에서 버퍼 길이가 자동으로 유추할 수 있습니다 (size 인수를 지정할 필요가 없습니다) 및 해당 보안에서 이미지와 이전, 안전 하지 않은 함수가 자동으로 바꿀 수 있습니다.자세한 내용은 보안 템플릿 오버 로드를 참조하십시오.
요구 사항
루틴 |
필수 헤더 |
---|---|
wcstombs_s |
<stdlib.h> |
추가 호환성 정보를 참조 하십시오. 호환성 소개에서 합니다.
예제
이 프로그램의 동작을 보여 줍니다 있는 wcstombs_s 함수입니다.
// crt_wcstombs_s.c
// This example converts a wide character
// string to a multibyte character string.
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define BUFFER_SIZE 100
int main( void )
{
size_t i;
char *pMBBuffer = (char *)malloc( BUFFER_SIZE );
wchar_t*pWCBuffer = L"Hello, world.";
printf( "Convert wide-character string:\n" );
// Conversion
wcstombs_s(&i, pMBBuffer, (size_t)BUFFER_SIZE,
pWCBuffer, (size_t)BUFFER_SIZE );
// Output
printf(" Characters converted: %u\n", i);
printf(" Multibyte character: %s\n\n",
pMBBuffer );
// Free multibyte character buffer
if (pMBBuffer)
{
free(pMBBuffer);
}
}
해당 .NET Framework 항목
해당 사항 없음. 표준 C 함수를 호출할 수 있습니다 PInvoke. 자세한 내용은 플랫폼 호출 예제.