다음을 통해 공유


mbrtoc16, mbrtoc32

문자열의 첫 번째 UTF-8 멀티바이트 문자를 해당하는 UTF-16 또는 UTF-32 문자로 변환합니다.

구문

size_t mbrtoc16(
   char16_t* destination,
   const char* source,
   size_t max_bytes,
   mbstate_t* state
);

size_t mbrtoc32(
   char32_t* destination,
   const char* source,
   size_t max_bytes,
   mbstate_t* state
);

매개 변수

destination
변환할 UTF-8 멀티바이트 문자에 해당하는 char16_t 또는 char32_t 문자의 포인터입니다. Null인 경우 함수는 값을 저장하지 않습니다.

source
변환할 UTF-8 멀티바이트 문자열의 포인터입니다.

max_bytes
변환할 문자에 대해 검사할 source 의 최대 바이트 수입니다. 이 인수는 null 종결자를 포함하여 1과 바이트 수 사이의 값이어야 합니다 source.

state
mbstate_t UTF-8 멀티바이트 문자열을 하나 이상의 출력 문자로 해석하는 데 사용되는 변환 상태 개체에 대한 포인터입니다.

반환 값

성공 시, 현재 state 값이 다음과 같을 때 적용되는 아래 조건 중 첫 번째 값이 반환됩니다.

조건
0 변환된 source 다음 max_bytes 이하 문자는 null 와이드 문자에 해당하며 null이 아닌 경우 destination 저장된 값입니다.

state 에는 초기 이동 상태가 포함되어 있습니다.
1과 max_bytes(포함) 사이 반환되는 값은 유효한 멀티바이트 문자를 완성하는 source 의 바이트 수입니다. null이 아닌 경우 destination 변환된 와이드 문자가 저장됩니다.
-3 null이 아닌 경우 destination 함수에 대한 이전 호출에서 destination 생성된 다음 와이드 문자가 저장되었습니다. source 의 바이트는 함수에 대한 이 호출에서 사용되지 않습니다.

둘 이상의 와이드 문자(예: 서로게이트 쌍)가 필요한 UTF-8 멀티바이트 문자를 가리키는 경우 source state 다음 함수 호출이 추가 문자를 기록하도록 값이 업데이트됩니다.
-2 다음 max_bytes 바이트는 불완전하지만 잠재적으로 유효한 UTF-8 멀티바이트 문자를 나타냅니다. destination에 저장된 값이 없습니다. 이 결과는 max_bytes 가 0인 경우에 발생할 수 있습니다.
-1 인코딩 오류가 발생했습니다. 다음 max_bytes 또는 그 이하의 바이트는 완전하고 유효한 UTF-8 멀티바이트 문자에 영향을 주지 않습니다. destination에 저장된 값이 없습니다.

EILSEQ 가 저장되고 errno 변환 상태 값 state 이 지정되지 않습니다.

설명

함수는 mbrtoc16 최대 바이트를 source 읽어 첫 번째 완전하고 유효한 UTF-8 멀티바이트 문자를 찾은 다음 해당하는 UTF-16 문자를 저장합니다destinationmax_bytes. 문자에 서로게이트 쌍 state 과 같은 둘 이상의 UTF-16 출력 문자가 필요한 경우 값은 다음 호출 시 destination 다음 UTF-16 문자를 저장하도록 설정됩니다 mbrtoc16. mbrtoc32 함수는 동일하지만, 출력이 UTF-32 문자로 저장됩니다.

null인 경우 source 이러한 함수는 에 대해 destination, "" (빈, null로 종료된 문자열) source및 1max_bytes의 인수 NULL 를 사용하여 수행한 호출과 동일한 값을 반환합니다. destinationmax_bytes 의 전달된 값은 무시됩니다.

null이 아닌 경우 source 함수는 문자열의 시작 부분에서 시작하여 최대 max_bytes 바이트를 검사하여 시프트 시퀀스를 포함하여 다음 UTF-8 멀티바이트 문자를 완료하는 데 필요한 바이트 수를 확인합니다. 검사된 바이트에 유효하고 완전한 UTF-8 멀티바이트 문자가 포함되는 경우 함수는 문자를 해당하는 16비트 또는 32비트 와이드 문자로 변환합니다. null이 아닌 경우 destination 함수는 첫 번째 결과 문자를 대상에 저장합니다. 추가 출력 문자가 필요한 경우 함수에 대한 후속 호출이 state추가 문자를 출력하고 값 -3을 반환하도록 값이 설정됩니다. 출력 문자가 더 이상 필요하지 않으면 state 가 초기 이동 상태로 설정됩니다.

UTF-8이 아닌 멀티바이트 문자를 UTF-16 LE 문자로 변환하려면 , mbtowc 또는 _mbtowc_l 함수를 사용합니다mbrtowc.

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

요구 사항

함수 C 헤더 C++ 헤더
mbrtoc16, mbrtoc32 <uchar.h> <cuchar>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

참고 항목

데이터 변환
Locale
멀티바이트 문자 시퀀스 해석
c16rtomb, c32rtomb
mbrtowc
mbsrtowcs
mbsrtowcs_s