ในส่วนนี้เราจะมาดูกันว่าตัวอักษรกว้างใน C++ คืออะไร เรายังจะได้เห็นฟังก์ชั่นบางอย่างที่ใช้จัดการกับตัวอักษรกว้างๆ อีกด้วย
อักขระแบบกว้างคล้ายกับประเภทข้อมูลอักขระ ความแตกต่างที่สำคัญคือ thatchar ใช้พื้นที่ 1 ไบต์ แต่อักขระแบบกว้างใช้พื้นที่ 2 ไบต์ (บางครั้ง 4 ไบต์ขึ้นอยู่กับคอมไพเลอร์) ของพื้นที่ในหน่วยความจำ สำหรับอักขระพื้นที่กว้าง 2 ไบต์สามารถใส่อักขระได้ 64K (65536) อักขระที่แตกต่างกัน อักขระแบบกว้างสามารถเก็บอักขระ UNICODE ได้ ค่า 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
เราสามารถสร้างอาร์เรย์อักขระแบบกว้างและพิมพ์เป็นสตริงได้
ตัวอย่าง
#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
ตอนนี้ให้เราดูฟังก์ชันบางอย่างที่ใช้สำหรับอักขระแบบกว้าง
ฟังก์ชัน | คำอธิบาย |
---|---|
wcslen() | ไวยากรณ์คือ size_t wcslen (const wchar_t* wcs); ฟังก์ชันนี้ใช้เพื่อรับความยาวของสตริงอักขระแบบกว้าง |
wcscat() | ไวยากรณ์คือ:wchar_t *wcscat(wchar_t *strDest, const wchar_t *strSrc);ฟังก์ชันนี้ใช้เพื่อเชื่อมสตริงต้นทางกับสตริงปลายทาง |
wcscpy() | ไวยากรณ์คือ wchar_t *wcscpy(wchar_t *strDest, const wchar_t *strSrc); ช่วยคัดลอกสตริงต้นทางไปยังสตริงปลายทาง |
wcsncpy() | ไวยากรณ์คือ wchar_t* wcsncpy(wchar_t* dest, const wchar_t* src, size_tn); ฟังก์ชันนี้ใช้เพื่อคัดลอกอักขระ n ตัวแรกของต้นทางไปยังปลายทาง เมื่อ end os source น้อยกว่า n จากนั้นที่ปลายทางจะมีอักขระ null บางตัว |
wcscmp() | ไวยากรณ์เป็น int wcscmp(const wchar_t* wcs1, const wchar_t* wcs2); ฟังก์ชันนี้ใช้เพื่อเปรียบเทียบสตริงอักขระแบบกว้างสองสตริง wcs1 และ wcs2 เป็นฟังก์ชัน likestrcmp() สำหรับการเปรียบเทียบสตริงปกติ |
wcsstr() | ไวยากรณ์คือ const wchar_t* wcsstr (const wchar_t* wcs1, const wchar_t*wcs2); ฟังก์ชันนี้ใช้เพื่อค้นหาการเกิดขึ้นครั้งแรกของ wcs2 ใน wcs1 หากไม่มีอยู่ ก็จะคืนค่า null |
wcstok() | ไวยากรณ์คือ wchar_t* wcstok( wchar_t* str, const wchar_t* delim, wchar_t** ptr); ฟังก์ชันนี้เหมือนกับ strtok() ช่วยในการ tokenize สตริงที่สร้างขึ้นโดยใช้อักขระแบบกว้าง ต้องใช้ตัวคั่นเพื่อสร้างโทเค็นให้กับสตริง |