Trong bài viết này, chúng ta sẽ thảo luận về hàm iswpunct() trong C++, cú pháp, cách hoạt động và giá trị trả về.
iswpunct() là hàm built-in trong C++ được định nghĩa trong header <cwctype>. Hàm kiểm tra xem ký tự rộng truyền vào có phải là ký tự dấu câu (punctuation) hay không. Đây là phiên bản wide character của ispunct(). Nếu là dấu câu trả về khác 0 (true), ngược lại trả về 0 (false).
Các ký tự dấu câu bao gồm
! @ # $ % ^ & * ( ) " ' , . / ; [ { } ] : ?
Cú pháp
int iswpunct(wint_t ch);
Hàm chỉ nhận một tham số: ký tự rộng cần kiểm tra. Tham số được ép kiểu sang wint_t hoặc WEOF.
Giá trị trả về
Hàm trả về giá trị nguyên: 0 (false) hoặc khác 0 (true).
Ví dụ 1
#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 << "\nLà ký tự dấu câu" : cout << "\nKhông phải ký tự dấu câu";
iswpunct(b) ? cout << "\nLà ký tự dấu câu" : cout << "\nKhông phải ký tự dấu câu";
iswpunct(c) ? cout << "\nLà ký tự dấu câu" : cout << "\nKhông phải ký tự dấu câu";
return 0;
}
Kết quả
Là ký tự dấu câu Không phải ký tự dấu câu Không phải ký tự dấu câu
Ví dụ 2: Đếm dấu câu trong chuỗi rộng
#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 << "Có " << count << " ký tự dấu câu.\n";
return 0;
}
Kết quả
Có 4 ký tự dấu câu.