이 기사에서는 C++ STL에서 std::mbrtoc32() 함수의 작동, 구문 및 예제에 대해 논의할 것입니다.
std::mbrtoc32()란 무엇입니까?
std::mbrtoc32() 함수는
연결된 문자 포인터가 null이 아니고 다른 모든 매개변수도 허용되는 경우 해당 32비트 문자를 변환합니다.
구문
size_t mbrtoc32( char32_t* pc32, char* str, size_t n, mbstate_t* ps);
매개변수
함수는 다음 매개변수를 받아들입니다 -
- pc32 − 출력을 저장할 위치에 대한 포인터입니다.
- 문자열 − 입력으로 사용되는 문자열입니다.
- n − 확인할 바이트 수입니다.
- ps − 멀티바이트 문자열을 해석할 때 상태 개체에 대한 포인터입니다.
반환 값
이 함수 반환 값은 다음 조건에 따라 다릅니다 -
- 0 - 변환해야 하는 str의 문자가 NULL인 경우 함수는 0을 반환합니다.
- 1…n - 문자열 *str에서 변환된 멀티바이트 문자의 바이트 수입니다.
- -3 - 대리 쌍 수단이 있는 경우 char32_t는 다중 char32_t에서 가져온 것입니다. 입력에서 바이트가 생성되지 않습니다.
- -2 − 다음 n 바이트가 불완전하지만 지금까지는 유효한 멀티바이트 문자일 때 -2를 얻습니다.
- -1 − 인코딩 오류가 발생하면 -1이 표시되고 *pc32에 아무 것도 기록되지 않습니다.
예시
#include <cstdio> #include <cstdlib> #include <iostream> #include <uchar.h> #include <wchar.h> using namespace std; int main(void) { char32_t hold; char str[] = "I"; mbstate_t arr{}; int len; // initializing the function len = mbrtoc32(&hold, str, MB_CUR_MAX, &arr); if (len < 0) { perror("conversion failed"); exit(-1); } cout << "String is: " << str << endl; cout << "Length is: " << len << endl; printf("32-bit character = 0g%02hd\n", hold); }
출력
String is: I Length is: 1 32-bit character = 0g73
예시
#include <cstdio> #include <cstdlib> #include <iostream> #include <uchar.h> #include <wchar.h> using namespace std; int main(void){ char32_t hold; char str[] = "I"; mbstate_t arr{}; int len; // initializing the function len = mbrtoc32(&hold, str, MB_CUR_MAX, &arr); if (len < 0){ perror("conversion failed"); exit(-1); } cout << "String is: " << str << endl; cout << "Length is: " << len << endl; printf("32-bit character = 0x%08hx\n", hold); }
출력
String is: I Length is: 1 32-bit character = 0x0x000000490