ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของฟังก์ชัน std::mbsrtowcs() ใน C++ STL
std::mbsrowcs() คืออะไร
std::mbsrtowcs() ฟังก์ชันเป็นฟังก์ชัน inbuilt ใน C++ STL ซึ่งกำหนดไว้ในไฟล์ส่วนหัว
ไวยากรณ์
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ß水