std::iswprint(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’– std::iswprint β€” C++ Standard Library πŸ’–

okay bestie, this is the std::iswprint(3) page, and we're reading it like a group chat. The manual name is folded right in: std::iswprint, C++ Standard Library. Periodt. πŸ’…

🌸 NAME 🌸

std::iswprint - std::iswprint

✨ Synopsis ✨

Defined in header <cwctype>:

int iswprint( std::wint_t ch );

So std::iswprint checks if the given wide character can be printed. That means it's either a number (0123456789), an uppercase letter (ABCDEFGHIJKLMNOPQRSTUVWXYZ), a lowercase letter (abcdefghijklmnopqrstuvwxyz), a punctuation character from this exact set:

!"#$%&'()*+,-./:;<=>?@[\]^_`{!}~

or a space, or any printable character specific to the current C locale. Slay. ✨

🚨 UNDEFINED BEHAVIOR ALERT 🚨 If the value of ch is neither representable as a wchar_t nor equal to the value of the macro WEOF, the behavior is undefined. No cap, do not pass that vibe. πŸ’€

πŸŽ€ Parameters πŸŽ€

  • ch β€” wide character. That's the whole parameter, bestie. 🫢

πŸ’… Return value πŸ’…

Non-zero value if the wide character can be printed, zero otherwise. Simple as that. πŸ’…

🧚 Notes 🧚

ISO 30112 specifies which Unicode characters are include in POSIX print category. That's the lore drop, bestie. 🧚

🌸 Example 🌸

Run this code, literally:

#include <clocale>
#include <cwctype>
#include <iostream>

void demo_iswprint(std::string_view rem, const std::wint_t c)
{
    std::cout << std::boolalpha << std::hex << std::showbase
              << rem << "iswprint('" << c << "') = "
              << !!std::iswprint(c) << '\n';
}

int main()
{
    const wchar_t c1 = L'\u2002'; // en-space
    const wchar_t c2 = L'\u0082'; // break permitted

    demo_iswprint("In default locale:\n", c1);

    std::setlocale(LC_ALL, "en_US.utf8");
    demo_iswprint("In Unicode locale:\n", c1);
    demo_iswprint("", c2);
}

πŸ¦‹ Possible output πŸ¦‹

In default locale:
iswprint('0x2002') = false
In Unicode locale:
iswprint('0x2002') = true
iswprint('0x82') = false

πŸ‘€ See also πŸ‘€

  • isprint(std::locale) β€” checks if a character is classified as printable by a locale (function template)
  • isprint β€” checks if a character is a printing character (function)
  • C documentation for iswprint

πŸ“ ASCII values table (verbatim) πŸ“

Here's the iconic ASCII values table, exactly as the page gives it β€” all of it, bestie, we don't skip lore:

               ASCII values            characters    iscntrl  isprint  isspace
       isblank  isgraph  ispunct  isalnum  isalpha  isupper  islower  isdigit
       isxdigit decimal hexadecimal   octal                   iswcntrl iswprint
       iswspace iswblank iswgraph iswpunct iswalnum iswalpha iswupper iswlower
       iswdigit iswxdigit 0–8     \x0–\x8     \0–\10    control codes   β‰ 0
       0        0        0        0        0        0        0        0
       0        0        0
                                     (NUL, etc.)  9       \x9         \11
       tab (\t)        β‰ 0       0        β‰ 0       β‰ 0       0        0        0
       0        0        0        0        0
                                     whitespaces 10–13   \xA–\xD     \12–\15
       (\n, \v, \f,    β‰ 0       0        β‰ 0       0        0        0        0
       0        0        0        0        0
                                     \r) 14–31   \xE–\x1F    \16–\37   control
       codes   β‰ 0       0        0        0        0        0        0        0
       0        0        0        0 32      \x20        \40       space
       0        β‰ 0       β‰ 0       β‰ 0       0        0        0        0
       0        0        0        0 33–47   \x21–\x2F   \41–\57
       !"#$%&'()*+,-./ 0        β‰ 0       0        0        β‰ 0       β‰ 0       0
       0        0        0        0        0 48–57   \x30–\x39   \60–\71
       0123456789      0        β‰ 0       0        0        β‰ 0       0        β‰ 0
       0        0        0        β‰ 0       β‰ 0 58–64   \x3A–\x40   \72–\100
       :;<=>?@         0        β‰ 0       0        0        β‰ 0       β‰ 0       0
       0        0        0        0        0 65–70   \x41–\x46   \101–\106
       ABCDEF          0        β‰ 0       0        0        β‰ 0       0        β‰ 0
       β‰ 0       β‰ 0       0        0        β‰ 0 71–90   \x47–\x5A   \107–\132
       GHIJKLMNOP      0        β‰ 0       0        0        β‰ 0       0        β‰ 0
       β‰ 0       β‰ 0       0        0        0
                                     QRSTUVWXYZ 91–96   \x5B–\x60   \133–\140
       [\]^_`          0        β‰ 0       0        0        β‰ 0       β‰ 0       0
       0        0        0        0        0 97–102  \x61–\x66   \141–\146
       abcdef          0        β‰ 0       0        0        β‰ 0       0        β‰ 0
       β‰ 0       0        β‰ 0       0        β‰ 0 103–122 \x67–\x7A   \147–\172
       ghijklmnop      0        β‰ 0       0        0        β‰ 0       0        β‰ 0
       β‰ 0       0        β‰ 0       0        0
                                     qrstuvwxyz 123–126 \x7B–\x7E   \172–\176
       {|}~            0        β‰ 0       0        0        β‰ 0       β‰ 0       0
       0        0        0        0        0 127     \x7F        \177
       backspace       β‰ 0       0        0        0        0        0        0
       0        0        0        0        0
                                     character (DEL)

πŸ’– That's the whole page, bestie! Source: http://cppreference.com Β· version/date: 2024.06.10 Β· page: std::iswprint(3). Mwah! πŸ’–

πŸ“¦ where this page comes from