std::iswspace(3)

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

πŸ’– NAME πŸ’–

okay so this page is std::iswspace(3), and the manual name up top says C++ Standard Libary β€” yes, Libary with that exact spelling, and we are not fixing it, it's iconic πŸ’…. The NAME line itself is std::iswspace - std::iswspace, which is the manual equivalent of "it's giving itself" β€” slay.

✨ Synopsis ✨

Defined in header <cwctype>, and the signature is literally:

Defined in header <cwctype>
int iswspace( wint_t ch );

It checks if the given wide character is a wide whitespace character as classified by the currently installed C locale. In the default locale, the whitespace characters are the following:

  • Space (0x20, ' ')
  • Form feed (0x0c, '\f')
  • Line feed (0x0a, '\n')
  • Carriage return (0x0d, '\r')
  • Horizontal tab (0x09, '\t')
  • Vertical tab (0x0b, '\v').
🚨 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. Like, do not do that, bestie πŸ’€.

πŸŽ€ Parameters πŸŽ€

  • ch β€” wide character.

πŸ’– Return value πŸ’–

Non-zero value if the wide character is a whitespace character, zero otherwise.

πŸ¦‹ Notes πŸ¦‹

ISO 30112 defines POSIX space characters as Unicode characters U+0009..U+000D, U+0020, U+1680, U+180E, U+2000..U+2006, U+2008..U+200A, U+2028, U+2029, U+205F, and U+3000.

🌸 Example 🌸

Demonstrates the use of iswspace with different locales.

// Run this code

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

void try_with(wchar_t c, const char* loc)
{
    std::setlocale(LC_ALL, loc);
    std::wcout << "isspace('" << c << "') in " << loc << " locale returned "
               << std::boolalpha << static_cast<bool>(std::iswspace(c)) << '\n';
}

int main()
{
    const wchar_t EM_SPACE = L'\u2003'; // Unicode character 'EM SPACE'
    try_with(EM_SPACE, "C");
    try_with(EM_SPACE, "en_US.UTF8");
}

Output:

isspace(' ') in C locale returned false
isspace(' ') in en_US.UTF8 locale returned true

⭐ See also ⭐

  • isspace(std::locale) β€” checks if a character is classified as whitespace by a locale (function template)
  • isspace β€” checks if a character is a space character (function)
  • C documentation for iswspace

πŸ“Š ASCII values chart πŸ“Š

Then the page drops this whole ASCII values chart. Header names, in the page's order: 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.

The rows below carry the 12 narrow values exactly as the page gives them β€” no invented wide duplicates, bestie 🫢.

decimal  hexadecimal  octal     characters                     iscntrl  isprint  isspace  isblank  isgraph  ispunct  isalnum  isalpha  isupper  islower  isdigit  isxdigit
0–8      \x0–\x8      \0–\10    control codes (NUL, etc.)      β‰ 0       0        0        0        0        0        0        0        0        0        0        0
9        \x9          \11       tab (\t)                       β‰ 0       0        β‰ 0       β‰ 0       0        0        0        0        0        0        0        0
10–13    \xA–\xD      \12–\15   whitespaces (\n, \v, \f, \r)   β‰ 0       0        β‰ 0       0        0        0        0        0        0        0        0        0
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 GHIJKLMNOPQRSTUVWXYZ           0        β‰ 0       0        0        β‰ 0       0        β‰ 0       β‰ 0       β‰ 0       0        0        0
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 ghijklmnopqrstuvwxyz           0        β‰ 0       0        0        β‰ 0       0        β‰ 0       β‰ 0       0        β‰ 0       0        0
123–126  \x7B–\x7E    \172–\176 {|}~                           0        β‰ 0       0        0        β‰ 0       β‰ 0       0        0        0        0        0        0
127      \x7F         \177      backspace character (DEL)      β‰ 0       0        0        0        0        0        0        0        0        0        0        0

okay that's the whole page, bestie πŸ’– β€” source/version is http://cppreference.com, date is 2024.06.10, and the footer is just std::iswspace(3) again. slay, periodt πŸ’…πŸŽ€

πŸ“¦ where this page comes from