c8rtomb
|
헤더 파일에 정의됨
<uchar.h>
|
||
| (C23부터) | ||
UTF-8에서 단일 코드 포인트를 좁은 멀티바이트 문자 표현으로 변환합니다.
만약 s 가 null 포인터가 아니고 c8 가 유효한 UTF-8 인코딩의 코드 포인트에서 마지막 코드 유닛인 경우, 이 함수는 해당 코드 포인트의 멀티바이트 문자 표현을 저장하는 데 필요한 바이트 수를 결정하고(시프트 시퀀스를 포함하며 현재 멀티바이트 변환 상태 * ps 를 고려하여), 멀티바이트 문자 표현을 s 가 가리키는 첫 번째 요소를 갖는 문자 배열에 저장하며, 필요한 경우 * ps 를 업데이트합니다. 이 함수로 최대 MB_CUR_MAX 바이트까지 기록할 수 있습니다.
만약 c8 가 코드 포인트 표현의 마지막 UTF-8 코드 유닛이 아닌 경우, 이 함수는 s 가 가리키는 배열에 쓰기를 수행하지 않으며, 오직 * ps 만 업데이트됩니다.
만약 s 가 null 포인터인 경우, 이 호출은 내부 버퍼 buf 에 대해 c8rtomb ( buf, u8 ' \0 ' , ps ) 와 동일합니다.
만약 c8 가 null 문자 u8 ' \0 ' 라면, null 바이트가 저장되며, 초기 shift state를 복원하는 데 필요한 shift sequence가 앞에 추가되고 변환 상태 매개변수 * ps 는 초기 shift state를 나타내도록 업데이트됩니다.
이 함수가 사용하는 멀티바이트 인코딩은 현재 활성화된 C 로캘에 의해 지정됩니다.
목차 |
매개변수
| s | - | 멀티바이트 문자가 저장될 narrow 문자 배열에 대한 포인터 |
| c8 | - | 변환할 UTF-8 코드 유닛 |
| ps | - | 멀티바이트 문자열을 해석할 때 사용되는 변환 상태 객체에 대한 포인터 |
반환값
배열 객체에 저장된 바이트 수(시프트 시퀀스를 포함). 이는 c8 가 코드 포인트의 UTF-8 표현에서 최종 코드 유닛이 아닐 때 0일 수 있습니다.
만약 c8 이 유효하지 않은 경우(유효한 멀티바이트 문자에 해당하는 char8_t 시퀀스에 기여하지 않는 경우), 매크로 EILSEQ 의 값이 errno 에 저장되고, ( size_t ) - 1 이 반환되며, 변환 상태는 지정되지 않습니다.
참고 사항
c8rtomb
함수를
s
인자로 널 포인터를 사용하여 호출하는 경우,
s
인자로 널 포인터를 사용하는 다른
c8rtomb
함수 호출과 데이터 경쟁(data race)이 발생할 수 있습니다.
예제
|
이 섹션은 불완전합니다
이유: 예제가 없음 |
참조문헌
- C23 표준 (ISO/IEC 9899:2024):
-
- 7.30.1.2 c8rtomb 함수
참고 항목
|
(C23)
|
좁은 멀티바이트 문자를 UTF-8 인코딩으로 변환합니다
(함수) |
|
C++ documentation
for
c8rtomb
|
|