ในส่วนนี้เราจะเรียนรู้เกี่ยวกับ Wide Character ใน C++ และฟังก์ชันสำหรับจัดการ Wide Character
Wide Character คล้ายกับชนิดข้อมูล char แต่ char ใช้พื้นที่ 1 ไบต์ ส่วน Wide Character ใช้ 2 ไบต์ (หรือ 4 ไบต์ ขึ้นอยู่กับคอมไพเลอร์) ด้วยพื้นที่ 2 ไบต์ จึงสามารถจัดเก็บตัวอักษรได้ 64K (65536) ตัวอักษร ทำให้ Wide Char รองรับตัวอักษร UNICODE ซึ่งเป็นมาตรฐานระดับนานาชาติสำหรับการเข้ารหัสตัวอักษรทุกภาษา
ตัวอย่าง
#include <iostream>
using namespace std;
int main() {
wchar_t wide_character = L'a';
cout << "The wide character is: " << wide_character << endl;
cout << "Wide character size: " << sizeof(wide_character);
}ผลลัพธ์
The wide character is: 97 Wide character size: 2
เห็นว่าต้องเติม 'L' ก่อนตัวลิเทอรัลตัวอักษร แต่ค่าตัวอักษรไม่แสดงผลด้วย cout ต้องใช้ wcout สำหรับแสดงผล และ wcin สำหรับรับค่า
เราสามารถสร้างอาร์เรย์ Wide Character และพิมพ์เป็นสตริงได้
ตัวอย่าง
#include <iostream>
using namespace std;
int main() {
char str1[] = "This is character array";
cout << str1 << endl;
wchar_t str2[] = L"This is wide character array";
wcout << str2;
}ผลลัพธ์
This is character array This is wide character array
ตารางฟังก์ชันสำหรับ Wide Characters:
| ฟังก์ชัน | คำอธิบาย |
|---|---|
| wcslen() | หาความยาวของสตริง Wide Character |
| wcscat() | ต่อสตริงต้นทางเข้ากับสตริงปลายทาง |
| wcscpy() | คัดลอกสตริงต้นทางไปยังปลายทาง |
| wcsncpy() | คัดลอก n ตัวอักษรแรกจากต้นทางไปปลายทาง |
| wcscmp() | เปรียบเทียบสองสตริง Wide Character เหมือน strcmp() |
| wcsstr() | หาตำแหน่งแรกของสตริงย่อยในสตริงหลัก คืนค่า NULL ถ้าไม่พบ |
| wcstok() | แบ่งสตริงเป็นโทเคนด้วยตัวคั่น เหมือน strtok() |