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

ฟังก์ชัน iswpunct() ใน C++ STL

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() (เว้นวรรค)