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

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


ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของฟังก์ชัน std::mbsrtowcs() ใน C++ STL

std::mbsrowcs() คืออะไร

std::mbsrtowcs() ฟังก์ชันเป็นฟังก์ชัน inbuilt ใน C++ STL ซึ่งกำหนดไว้ในไฟล์ส่วนหัว mbsrtowcs() หมายความว่ามันแปลงสตริงอักขระหลายไบต์ที่สิ้นสุดด้วยค่า null ซึ่งไบต์แรกคือ *src เป็นการแสดงอักขระแบบกว้าง ฟังก์ชันนี้จะคืนค่าตามการแปลง

ไวยากรณ์

size_t mbsrtowcs( wchar_t* pwc, char** str, size_t n, mbstate_t* ps);

พารามิเตอร์

ฟังก์ชันยอมรับพารามิเตอร์ต่อไปนี้ -

  • pwc − นี่คือตัวชี้ไปยังตำแหน่งที่เราต้องการให้จัดเก็บเอาต์พุต
  • str − สตริงอักขระที่ใช้เป็นอินพุต
  • − เป็นจำนวนไบต์ที่ต้องตรวจสอบ
  • ป.ล. − เป็นตัวชี้ไปยังอ็อบเจ็กต์สถานะเมื่อเราแปลสตริงแบบหลายไบต์

คืนค่า

ค่าที่ส่งกลับของฟังก์ชันนี้แตกต่างกันตามเงื่อนไขต่อไปนี้ -

  • 0 − ฟังก์ชันจะคืนค่าศูนย์เมื่ออักขระใน str ที่ต้องแปลงเป็น NULL
  • 1…n− จำนวนไบต์ของอักขระลงท้าย null ซึ่งถูกแปลงและเก็บไว้ในสตริง *str.
  • -1 − เราได้รับสิ่งนี้เมื่อมีข้อผิดพลาดขณะแปลง errno ถูกตั้งค่าเป็น EILSEQ

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int main(){
   setlocale(LC_ALL, "en_US.utf8");
   const char* ch = "\u0777\u0755";
   wchar_t arr[20];
   mbstate_t hold = mbstate_t();
   int highest = 10;
   int val = mbsrtowcs ( arr, &ch, highest, &hold );
   wcout << L"Wide characters are: "<< val << endl;
   wcout << L"Given Wide character is: " << arr << endl;
   return 0;
}

ผลลัพธ์

Wide characters are: 2
Given Wide character is: ݷݕ

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int main() {
   setlocale(LC_ALL, "en_US.utf8");
   const char* ch = u8"z\u00df\u6c34";
   wchar_t arr[20];
   mbstate_t hold = mbstate_t();
   int highest = 10;
   int val = mbsrtowcs ( arr, &ch, highest, &hold );
   wcout << L"Total Wide characters are: "<< val << endl;
   wcout << L"Given Wide character is: " << arr << endl;
   return 0;
}

ผลลัพธ์

Total Wide characters are: 3
Given Wide character is: zß水