ใน C ++ เราสามารถใช้การแสดงอักขระแบบ 32 บิตได้ ฟังก์ชัน c32rtomb() ใช้เพื่อแปลงการแสดงอักขระแบบ 32 บิตเป็นการแสดงอักขระแบบหลายไบต์แบบแคบ เราพบฟังก์ชันนี้ในไฟล์ส่วนหัว uchar.h
ฟังก์ชันนี้ใช้พารามิเตอร์สามตัว เหล่านี้คือ −
- สตริงที่จะจัดเก็บอักขระแบบหลายไบต์
- อักขระ 32 บิตในการแปลง
- ตัวชี้ของประเภทวัตถุ mbstate_t ซึ่งใช้ในการตีความสตริงหลายไบต์
ฟังก์ชันนี้จะคืนค่าจำนวนไบต์ที่เขียนไปยังอาร์เรย์อักขระ เมื่อสำเร็จ มิฉะนั้นจะคืนค่า -1 มาดูตัวอย่างกันดีกว่า
ตัวอย่าง
#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); //get length from c32rtomb() method
if ((length == 0) || (length > 50))
break;
for (int i = 0; i < length; ++i)
cout << dest[i];
j++;
}
} ผลลัพธ์
Hello World