Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

ฟังก์ชัน c16rtomb() ใน C/C++?


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