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

ฟังก์ชันอักขระและไลบรารีแบบกว้างใน C++


ในส่วนนี้เราจะมาดูกันว่าตัวอักษรกว้างใน 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 สตริงที่สร้างขึ้นโดยใช้อักขระแบบกว้าง ต้องใช้ตัวคั่นเพื่อสร้างโทเค็นให้กับสตริง