다음을 통해 공유


mbsrtowcs

현재 로캘의 멀티바이트 문자열을 해당하는 와이드 문자열로 변환합니다. 이때 멀티바이트 문자의 중간에서 변환을 다시 시작할 수 있습니다. 이 함수의 더 안전한 버전을 사용할 수 있습니다. 를 참조하세요 mbsrtowcs_s.

구문

size_t mbsrtowcs(
   wchar_t *wcstr,
   const char **mbstr,
   sizeof count,
   mbstate_t *mbstate
);
template <size_t size>
size_t mbsrtowcs(
   wchar_t (&wcstr)[size],
   const char **mbstr,
   sizeof count,
   mbstate_t *mbstate
); // C++ only

매개 변수

wcstr
변환된 결과 와이드 문자열을 저장하는 주소입니다.

mbstr
변환할 멀티바이트 문자열의 위치에 대한 간접 포인터입니다.

count
변환하여 wcstr에 저장할 최대 문자(바이트 아님) 수입니다.

mbstate
mbstate_t 변환 상태 개체에 대한 포인터입니다. 이 값이 null 포인터이면 정적 내부 변환 상태 개체가 사용됩니다. 내부 mbstate_t 개체는 스레드로부터 안전하지 않으므로 항상 고유한 mbstate 매개 변수를 전달하는 것이 좋습니다.

반환 값

종결 null 문자(있는 경우)를 포함하지 않고 정상적으로 변환된 문자 수를 반환합니다. 오류가 발생한 경우 (size_t)(-1)를 반환하고 로 설정합니다 errno EILSEQ.

설명

mbsrtowcs 함수는 mbstr에 포함된 변환 상태를 사용하여 wcstr이 간접적으로 가리키는 멀티바이트 문자열을 mbstate이 가리키는 버퍼에 저장된 와이드 문자로 변환합니다. 종료 null 멀티바이트 문자가 발견되거나, 현재 로캘의 유효한 문자에 해당하지 않는 멀티바이트 시퀀스가 발생하거나, 문자가 변환될 때까지 count 각 문자에 대해 변환이 계속됩니다. mbsrtowcscount가 나올 때나 그 전에 멀티바이트 null 문자('\0')를 발견하면 해당 문자를 16비트 종결 null 문자로 변환한 후 중지됩니다.

따라서 wcstr의 와이드 문자열은 mbsrtowcs가 변환 중에 멀티바이트 null 문자를 발견하는 경우에만 null로 종결됩니다. mbstr이 가리키는 시퀀스와 wcstr이 가리키는 시퀀스가 겹치는 경우 mbsrtowcs의 동작이 정의되지 않습니다. mbsrtowcs 는 현재 로캘의 LC_TYPE 범주에 의해 영향을 받습니다.

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

null 포인터가 아닌 경우 종료 null 문자에 도달하여 mbstr 변환이 중지된 경우 wcstr 가리키는 포인터 개체에 null 포인터가 할당됩니다. 그렇지 않으면 변환된 마지막 멀티바이트 문자(있는 경우)를 지나 주소가 할당됩니다. 후속 함수 호출에서 이 호출이 중지된 변환을 다시 시작할 수 있습니다.

인수가 wcstr null 포인터 count 이면 인수가 무시되고 mbsrtowcs 대상 문자열에 필요한 크기를 와이드 문자로 반환합니다. mbstate가 null 포인터이면 함수는 스레드로부터 안전하지 않은 정적 내부 mbstate_t 변환 상태 개체를 사용합니다. 문자 시퀀스에 mbstr 해당 멀티바이트 문자 표현이 없으면 -1이 반환되고 errnoEILSEQ설정됩니다.

mbstr이 Null 포인터인 경우 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용한 경우 이 함수는 errnoEINVAL 로 설정하고 -1을 반환합니다.

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

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

예외

mbsrtowcs 함수가 실행 mbstate 되고 인수가 null 포인터가 아닌 한 현재 스레드 호출 setlocale 에 함수가 없는 한 함수는 다중 스레드로부터 안전합니다.

요구 사항

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

참고 항목

데이터 변환
Locale
멀티바이트 문자 시퀀스 해석
mbrtowc
mbtowc, _mbtowc_l
mbstowcs, _mbstowcs_l
mbsinit