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

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


ฟังก์ชัน mbrtowc() นี้ใช้เพื่อแปลงลำดับหลายไบต์เป็นสตริงอักขระแบบกว้าง ส่งคืนความยาวของอักขระหลายไบต์ในหน่วยไบต์ ไวยากรณ์เป็นเหมือนด้านล่าง

mbrtowc (wchar_t* wc, const char* s, size_t max, mbstate_t* ps)

อาร์กิวเมนต์คือ −

  • wc คือพอยน์เตอร์ซึ่งชี้ตำแหน่งที่จะเก็บอักขระแบบกว้างที่ได้ผลลัพธ์ไว้
  • s เป็นตัวชี้ไปยังสตริงอักขระหลายไบต์เป็นอินพุต
  • max คือจำนวนไบต์สูงสุดในหน่วย s ที่ตรวจสอบได้
  • ps กำลังชี้ไปที่สถานะการแปลง เมื่อแปลสตริงแบบหลายไบต์

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
void display(const char* s) {
   mbstate_t ps = mbstate_t(); // initial state
   int s_len = strlen(s);
   const char* n = s + s_len;
   int len;
   wchar_t wide_char;
   while ((len = mbrtowc(&wide_char, s, n - s, &ps)) > 0) {
      wcout << "The following " << len << " bytes are for the character " << wide_char << '\n';
      s += len;
   }
}
main() {
   setlocale(LC_ALL, "en_US.utf8");
   const char* str = u8"z\u00cf\u7c38\U00000915";
   display(str);
}

ผลลัพธ์

The following 1 bytes are for the character z
The following 2 bytes are for the character Ï
The following 3 bytes are for the character 簸
The following 3 bytes are for the character क