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

Hàm iswprint() trong C++


Chúng ta được giao nhiệm vụ trình bày hoạt động của iswprint(). Hàm iswprint() trong C++ STL dùng để kiểm tra xem một wide character (ký tự rộng) có thể in được hay không. Hàm này nằm trong header <cwctype>. Wide character là kiểu dữ liệu ký tự có kích thước lớn hơn ký tự truyền thống 8-bit.

Cú pháp

int iswprint(wint_t c);

Tham số

c – Wide character cần kiểm tra xem có in được hay không.

Giá trị trả về

  • Trả về giá trị khác 0 (true) nếu c có thể in được.
  • Trả về 0 (false) nếu c không thể in được.

Các ký tự có thể in (printable characters)

  • Chữ hoa – A-Z
  • Chữ thường – a-z
  • Chữ số – 0-9
  • Ký tự dấu câu – ! " @ # $ % ^ & * ( ) } | \ ] [ _ - + ' ? / . , } : ; ~ `
  • Khoảng trắng – space

Ví dụ 1: Thay thế ký tự không in được

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

int main() {
    wchar_t str[] = L"authorized<channel<partners";
    wcout << str << endl;
    
    for (int i = 0; i < wcslen(str); i++) {
        if (!iswprint(str[i]))
            str[i] = L'@';
    }
    wcout << str << endl;
    return 0;
}

Kết quả

authorized<channel<partners
authorised@channel@partners

Giải thích: Ký tự '<' không phải ký tự in được tiêu chuẩn trong một số locale, nên bị thay bằng '@'.

Ví dụ 2

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

int main() {
    wchar_t str[] = L"and I am<= Iron Man";
    wcout << str << endl;
    
    for (int i = 0; i < wcslen(str); i++) {
        if (!iswprint(str[i]))
            str[i] = L'&';
    }
    wcout << str << endl;
    return 0;
}

Kết quả

and I am<= Iron Man
and I am && Iron Man

Lưu ý: Kết quả có thể khác nhau tùy vào locale và encoding của hệ thống. Hàm iswprint() kiểm tra theo locale hiện tại (setlocale).