Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

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


Bài viết thảo luận hoạt động, cú pháp và ví dụ của std::mbrtoc16() trong C++ STL.

std::mbrtoc16() là gì?

Hàm nội tại C++ STL, định nghĩa trong . Chuyển ký tự multibyte hẹp sang biểu diễn UTF-16 (16-bit).

Nếu con trỏ ký tự không null và các tham số hợp lệ, chuyển đổi ký tự 16-bit tương ứng.

Cú pháp

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

Tham số

  • pc16 – con trỏ lưu kết quả.
  • str – chuỗi đầu vào.
  • n – số byte kiểm tra.
  • ps – con trỏ trạng thái khi dịch multibyte.

Giá trị trả về

  • 0 – ký tự cần chuyển là NULL.
  • 1...n – số byte multibyte đã chuyển từ *str.
  • -3 – surrogate pair (char16_t từ multi-char16_t), không tạo byte từ đầu vào.
  • -2 – n byte tiếp theo chưa hoàn chỉnh nhưng hiện tại hợp lệ.
  • -1 – lỗi encoding, không ghi vào *pc16.

Ví dụ

#include 
#include 
#include 
#include 
#include 
using namespace std;
int main(void){
    char16_t hold;
    char str[] = "I";
    mbstate_t arr{};
    int len;
    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);
}

Kết quả

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