Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

예제가 있는 C/C++의 mbrtoc16()

<시간/>

이 기사에서는 C++ STL에서 std::mbrtoc16() 함수의 작동, 구문 및 예제에 대해 논의할 것입니다.

std::mbrtoc16()이란 무엇입니까?

std::mbrtoc16() 함수는 헤더 파일에 정의된 C++ STL의 내장 함수입니다. 이 함수는 좁은 멀티바이트 문자를 UTF-16 문자 표현으로 변환하는 데 사용됩니다.

연결된 문자 포인터가 null이 아니고 다른 모든 매개변수도 허용되는 경우 해당 16비트 문자를 변환합니다.

구문

size_t mbrtoc16( char16_t* pc16, char* str, size_t n, mbstate_t* ps);

매개변수

이 함수는 다음 매개변수를 허용합니다. -

  • pc16 − 출력을 저장할 위치에 대한 포인터입니다.
  • 문자열 − 입력으로 사용되는 문자열입니다.
  • n − 확인할 바이트 수입니다.
  • ps − 멀티바이트 문자열을 해석할 때 상태 개체에 대한 포인터입니다.

반환 값

이 함수 반환 값은 다음 조건에 따라 다릅니다 -

  • 0 − 변환해야 하는 str의 문자가 NULL인 경우 함수는 0을 반환합니다.
  • 1…n - 문자열 *str에서 변환된 멀티바이트 문자의 바이트 수입니다.
  • -3 - 대리 쌍 수단이 있는 경우 char16_t는 다중 char16_t에서 가져온 것입니다. 입력에서 바이트가 생성되지 않습니다.
  • -2 − 다음 n 바이트가 불완전하지만 지금까지는 유효한 멀티바이트 문자일 때 -2를 얻습니다.
  • -1 − 인코딩 오류가 발생하면 -1이 표시되고 *pc16에는 아무 것도 기록되지 않습니다.

예시

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <uchar.h>
#include <wchar.h>
using namespace std;
int main(void){
   char16_t hold;
   char str[] = "I";
   mbstate_t arr{};
   int len;
   // initializing the function
   len = mbrtoc16(&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("16-bit character = 0g%02hd\n", hold);
}

출력

String is: I
Length is: 1
16-bit character = 0g73