iswpunct() คืออะไร?
iswpunct() เป็นฟังก์ชันในตัวใน C++ ซึ่งนิยามในไฟล์หัวข้อ <cwctype> ฟังก์ชันนี้ตรวจสอบว่า อักขระกว้าง (wide character) ที่ส่งผ่านเข้ามาเป็น อักขระเครื่องหมายวรรคตอน (punctuation character) หรือไม่ ฟังก์ชันนี้เป็นเวอร์ชัน wide character ของ ispunct() ทำงานเหมือนกันแต่รองรับอักขระกว้าง ฟังก์ชันตรวจสอบว่าอาร์กิวเมนต์ที่ส่งมาเป็นอักขระเครื่องหมายวรรคตอน หากใช่ ส่งคืนค่าเต็มที่ไม่ใช่ศูนย์ (true) มิฉะนั้นส่งคืนศูนย์ (false)
อักขระเครื่องหมายวรรคตอน (Punctuation characters) ประกอบด้วย
! @ # $ % ^ & * ( ) " ' , . / ; [ { } ] : ? และอื่นๆ ที่ไม่ใช่ alphanumeric หรือ whitespace
ไวยากรณ์ (Syntax)
int iswpunct(wint_t ch);
ฟังก์ชันรับพารามิเตอร์เพียงหนึ่งตัว คือ อักขระกว้างที่ต้องการตรวจสอบ อาร์กิวเมนต์จะถูกแปลงเป็น wint_t หรือ WEOF
ค่าที่ส่งคืน (Return Value)
ฟังก์ชันส่งคืนค่าเต็ม ซึ่งอาจเป็น 0 (กรณี false) หรือค่าใดๆ ที่ไม่ใช่ศูนย์ (กรณี true)
ตัวอย่างการใช้งาน iswpunct()
#include <iostream>
#include <cwctype>
using namespace std;
int main() {
wint_t a = L'.';
wint_t b = L'a';
wint_t c = L'1';
iswpunct(a) ? cout << "\nเป็นอักขระเครื่องหมายวรรคตอน" : cout << "\nไม่ใช่อักขระเครื่องหมายวรรคตอน";
iswpunct(b) ? cout << "\nเป็นอักขระเครื่องหมายวรรคตอน" : cout << "\nไม่ใช่อักขระเครื่องหมายวรรคตอน";
iswpunct(c) ? cout << "\nเป็นอักขระเครื่องหมายวรรคตอน" : cout << "\nไม่ใช่อักขระเครื่องหมายวรรคตอน";
return 0;
}
ผลลัพธ์ (Output)
เป็นอักขระเครื่องหมายวรรคตอน ไม่ใช่อักขระเครื่องหมายวรรคตอน ไม่ใช่อักขระเครื่องหมายวรรคตอน
ตัวอย่างประยุกต์: นับเครื่องหมายวรรคตอนในสตริงกว้าง
#include <iostream>
#include <cwctype>
using namespace std;
int main() {
int i = 0, count = 0;
wchar_t s[] = L"@tutorials, point!!";
while (s[i]) {
if (iswpunct(s[i]))
count++;
i++;
}
cout << "มีเครื่องหมายวรรคตอนทั้งหมด " << count << " ตัว\n";
return 0;
}
ผลลัพธ์ (Output)
มีเครื่องหมายวรรคตอนทั้งหมด 4 ตัว
ฟังก์ชันที่เกี่ยวข้อง: ispunct() (สำหรับ char ธรรมดา), iswalpha() (ตัวอักษร), iswdigit() (ตัวเลข), iswalnum() (ตัวอักษรหรือตัวเลข), iswspace() (เว้นวรรค)