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
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