Computer >> Máy Tính >  >> Lập trình >> lập trình C

mbrtoc32 () trong C / C ++ với Ví dụ

Trong bài viết này, chúng ta sẽ thảo luận về cách làm việc, cú pháp và các ví dụ của hàm std ::mbrtoc32 () trong C ++ STL.

std ::mbrtoc32 () là gì?

Hàm std ::mbrtoc32 () là một hàm có sẵn trong C ++ STL, được định nghĩa trong tệp tiêu đề . Hàm này được sử dụng để chuyển đổi một ký tự đa byte hẹp thành biểu diễn ký tự UTF-32.

Nếu con trỏ ký tự được liên kết không phải là null và tất cả các tham số khác cũng được chấp nhận thì nó sẽ chuyển đổi ký tự 32 bit tương ứng.

Cú pháp

size_t mbrtoc32( char32_t* pc32, char* str, size_t n, mbstate_t* ps);

Tham số

Hàm chấp nhận (các) tham số sau -

  • pc32 - Đây là con trỏ đến vị trí mà chúng ta muốn lưu trữ kết quả đầu ra.
  • str - Chuỗi ký tự được sử dụng làm đầu vào.
  • n - Đó là số byte cần được kiểm tra.
  • ps - Nó là con trỏ đến đối tượng trạng thái khi chúng ta đang diễn giải chuỗi multibyte.

Giá trị trả về

Giá trị trả về của hàm này khác nhau tùy theo điều kiện sau -

  • 0 - Hàm sẽ trả về 0 khi ký tự trong str phải được chuyển đổi là NULL.
  • 1… n - Số byte của ký tự multibyte được chuyển đổi từ chuỗi ký tự * str.
  • -3 - Nếu có một cặp thay thế nghĩa là char32_t là từ multi-char32_t. Không có byte nào được thực hiện từ đầu vào.
  • -2 - Chúng tôi sẽ nhận được -2 khi n byte tiếp theo chưa hoàn thành nhưng cho đến nay là ký tự multibyte hợp lệ.
  • -1 - Chúng tôi nhận được -1 khi gặp lỗi mã hóa, không có gì được ghi vào * pc32.

Ví dụ

#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);
}

Đầu ra

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

Ví dụ

#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);
}

Đầu ra

String is: I
Length is: 1
32-bit character = 0x0x000000490