iswxdigit() คืออะไร?
iswxdigit() เป็นฟังก์ชันในตัวใน C++ ซึ่งนิยามในไฟล์หัวข้อ <cwctype> ฟังก์ชันนี้ตรวจสอบว่า อักขระกว้าง (wide character) ที่ส่งผ่านเข้ามาเป็นอักขระฐานสิบหก (hexadecimal character) หรือไม่ หากอักขระที่ส่งมาเป็นอักขระฐานสิบหก จะส่งคืนค่าเต็มที่ไม่ใช่ศูนย์ (true) มิฉะนั้นส่งคืนศูนย์ (false)
อักขระฐานสิบหก (Hexadecimal characters) ประกอบด้วย
0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
ไวยากรณ์ (Syntax)
int iswxdigit(wint_t ch);
ฟังก์ชันรับพารามิเตอร์เพียงหนึ่งตัว คือ อักขระกว้างที่ต้องการตรวจสอบ อาร์กิวเมนต์จะถูกแปลงเป็น wint_t หรือ WEOF
wint_t เก็บข้อมูลชนิดเต็ม (integral type)
ค่าที่ส่งคืน (Return Value)
ฟังก์ชันส่งคืนค่าเต็ม ซึ่งอาจเป็น 0 (กรณี false) หรือค่าใดๆ ที่ไม่ใช่ศูนย์ (กรณี true)
ตัวอย่างการใช้งาน iswxdigit()
#include <iostream>
#include <cwctype>
using namespace std;
int main() {
wint_t a = L'A';
wint_t b = L'9';
wint_t c = L'g'; // ตัวพิมพ์เล็ก g ไม่ใช่ hex digit (hex มีแค่ a-f)
iswxdigit(a) ? cout << "\nเป็นอักขระฐานสิบหก" : cout << "\nไม่ใช่อักขระฐานสิบหก";
iswxdigit(b) ? cout << "\nเป็นอักขระฐานสิบหก" : cout << "\nไม่ใช่อักขระฐานสิบหก";
iswxdigit(c) ? cout << "\nเป็นอักขระฐานสิบหก" : cout << "\nไม่ใช่อักขระฐานสิบหก";
return 0;
}
ผลลัพธ์ (Output)
เป็นอักขระฐานสิบหก เป็นอักขระฐานสิบหก ไม่ใช่อักขระฐานสิบหก
ตัวอย่างประยุกต์: แปลงสตริงฐานสิบหกเป็นตัวเลข
#include <stdio.h>
#include <cwchar>
#include <cwctype>
using namespace std;
int main() {
wchar_t s[] = L"ffff";
long int num;
if (iswxdigit(s[0])) {
num = wcstol(s, NULL, 16);
wprintf(L"เลขฐานสิบหก %lx คือ %ld ในฐานสิบ\n", num, num);
}
return 0;
}
ผลลัพธ์ (Output)
เลขฐานสิบหก ffff คือ 65535 ในฐานสิบ
ฟังก์ชันที่เกี่ยวข้อง: isxdigit() (สำหรับ char ธรรมดา), iswdigit() (ตรวจสอบตัวเลข 0-9), iswalpha() (ตรวจสอบตัวอักษร)