Trong C++, chúng ta có thể sử dụng biểu diễn ký tự 32-bit. Hàm c32rtomb() dùng để chuyển đổi biểu diễn ký tự 32-bit sang ký tự multi-byte hẹp (narrow). Hàm này nằm trong header <uchar.h>.
Hàm nhận 3 tham số:
- Chuỗi lưu ký tự multi-byte kết quả
- Ký tự 32-bit cần chuyển đổi
- Con trỏ đối tượng
mbstate_tđể giải mã chuỗi multi-byte
Hàm trả về số byte đã ghi nếu thành công, ngược lại trả về -1.
Ví dụ
#include <iostream>
#include <uchar.h>
#include <wchar.h>
using namespace std;
int main() {
const char32_t myStr[] = U"Hello World";
char dest[50];
mbstate_t p{};
size_t length;
int j = 0;
while (myStr[j]) {
length = c32rtomb(dest, myStr[j], &p);
if ((length == 0) || (length > 50))
break;
for (int i = 0; i < length; ++i)
cout << dest[i];
j++;
}
return 0;
}
Kết quả
Hello World