Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hàm iswgraph() trong C/C++

iswgraph() (header <cwctype>) kiểm tra xem một ký tự rộng (wide character) có biểu diễn đồ họa (graphical representation) hay không. Là phiên bản wide-char của isgraph() (<cctype>).

Ký tự có biểu diễn đồ họa

Tất cả ký tự in được (printable) trừ khoảng trắng (space). Bao gồm:

  • Chữ cái: A-Z, a-z (và các chữ cái Unicode).
  • Chữ số: 0-9.
  • Ký tự đặc biệt: !@#$%^&*()_+-=[]{}|;':",./<>? v.v.
  • KHÔNG bao gồm: space (' '), tab ('\t'), newline ('\n'), các control character khác.

Cú pháp

int iswgraph(wint_t ch);
  • Tham số: wint_t ch (kiểu wide character, thường là wchar_t).
  • Trả về: Non-zero (true) nếu có biểu diễn đồ họa, 0 (false) nếu không.

Ví dụ 1: Kiểm tra ký tự thường

#include <cwctype>
#include <iostream>
using namespace std;

int main() {
    wchar_t ch1 = L'%';
    wchar_t ch2 = L')';
    
    if (iswgraph(ch1))
        wcout << L"Có biểu diễn đồ họa: " << ch1 << '\n';
    else
        wcout << L"KHÔNG có biểu diễn đồ họa: " << ch1 << '\n';
    
    if (iswgraph(ch2))
        wcout << L"Có biểu diễn đồ họa: " << ch2 << '\n';
    else
        wcout << L"KHÔNG có biểu diễn đồ họa: " << ch2 << '\n';
    
    return 0;
}

Đầu ra

Có biểu diễn đồ họa: %
Có biểu diễn đồ họa: )

Ví dụ 2: Ký tự số vs ký tự điều khiển

#include <cwctype>
#include <iostream>
using namespace std;

int main() {
    wchar_t ch1 = L'9';
    wchar_t ch2 = L'\n'; // Newline
    
    wcout << L'9' << (iswgraph(ch1) ? L": Có" : L": Không") << L" biểu diễn đồ họa\n";
    wcout << L'\\n' << (iswgraph(ch2) ? L": Có" : L": Không") << L" biểu diễn đồ họa\n";
    
    return 0;
}

Đầu ra

9: Có biểu diễn đồ họa
\n: Không biểu diễn đồ họa

Ví dụ 3: Kiểm tra toàn bộ chuỗi rộng

#include <cwctype>
#include <iostream>
#include <string>
using namespace std;

bool all_graphical(const wstring& s) {
    for (wchar_t ch : s) {
        if (!iswgraph(ch)) return false;
    }
    return true;
}

int main() {
    wstring s1 = L"Hello123";
    wstring s2 = L"Hello World"; // Có space
    wstring s3 = L"Line1\nLine2"; // Có newline
    
    wcout << L"'" << s1 << L"' all graphical: " << all_graphical(s1) << '\n'; // true
    wcout << L"'" << s2 << L"' all graphical: " << all_graphical(s2) << '\n'; // false
    wcout << L"'" << s3 << L"' all graphical: " << all_graphical(s3) << '\n'; // false
    return 0;
}

Hàm liên quan (wide character)

HàmHeaderKiểm tra
iswprint<cwctype>In được (bao gồm space)
iswspace<cwctype>Whitespace (space, tab, nl...)
iswalnum<cwctype>Chữ cái hoặc số
iswalpha<cwctype>Chữ cái
iswdigit<cwctype>Chữ số
iswpunct<cwctype>Ký tự punctuation
iswcntrl<cwctype>Control character
iswupper / iswlower<cwctype>Chữ hoa / chữ thường

Lưu ý

  • Hành vi phụ thuộc vào locale hiện tại (setlocale).
  • Đối số phải là wint_t hoặc WEOF. Ép kiểu từ wchar_t an toàn.
  • Với char thông thường, dùng isgraph() từ <cctype>.