ใน C ++ เราสามารถใช้การแสดงอักขระ 16 บิตได้ ฟังก์ชัน c16rtomb() ใช้เพื่อแปลงการแสดงอักขระ 16 บิตเป็นการแสดงอักขระแบบหลายไบต์แบบแคบ เราพบฟังก์ชันนี้ในไฟล์ส่วนหัว uchar.h
ฟังก์ชันนี้ใช้พารามิเตอร์สามตัว เหล่านี้คือ −
- สตริงที่จะจัดเก็บอักขระแบบหลายไบต์
- แปลงอักขระ 16 บิต
- ตัวชี้ของประเภทวัตถุ mbstate_t ซึ่งใช้ในการตีความสตริงหลายไบต์
ฟังก์ชันนี้จะคืนค่าจำนวนไบต์ที่เขียนไปยังอาร์เรย์อักขระ เมื่อสำเร็จ มิฉะนั้นจะคืนค่า -1 มาดูตัวอย่างกันดีกว่า
ตัวอย่าง
#include <iostream> #include <uchar.h> #include <wchar.h> using namespace std; int main() { const char16_t myStr[] = u"Hello World"; char dest[50]; mbstate_t p{}; size_t length; int j = 0; while (myStr[j]) { length = c16rtomb(dest, myStr[j], &p); //get length from c16rtomb() method if ((length == 0) || (length > 50)) break; for (int i = 0; i < length; ++i) cout << dest[i]; j++; } }
ผลลัพธ์
Hello World