std::iswpunct(3)

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

hey bestie, welcome to the std::iswpunct(3) page from the C++ Standard Libary πŸ’–βœ¨

πŸŽ€ NAME πŸŽ€

std::iswpunct β€” std::iswpunct (yes, the name is literally the name again, and honestly? iconic πŸ’…)

✨ Synopsis ✨

okay so first thing: this lives in the header <cwctype> 🫢

defined in header <cwctype>

int iswpunct( std::wint_t ch );

It checks if the wide character you hand it is a punctuation character β€” i.e. it is one of

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

or any punctuation character specific to the current locale. periodt. 🌍

⚠️ important: 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 do that.

πŸ’– Parameters πŸ’–

  • ch β€” wide character πŸŒ€

🌸 Return value 🌸

Non-zero value if the wide character is a punctuation character, zero otherwise. that’s it, that’s the return value πŸ’…

πŸ¦‹ Notes πŸ¦‹

ISO 30112 specifies which Unicode characters are included in the POSIX punct category. (the original wording says β€œare include,” but we’re keeping the meaning, not the typo ✨)

πŸ”₯ Example πŸ”₯

run this code, it’s giving main character energy:

// Run this code

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

int main()
{
    wchar_t c = L'\u2051'; // Two asterisks ('⁑')

    std::cout << std::hex << std::showbase << std::boolalpha
              << "in the default locale, iswpunct("
              << static_cast<std::wint_t>(c) << ") = "
              << static_cast<bool>(std::iswpunct(c)) << '\n';

    std::setlocale(LC_ALL, "en_US.utf8");
    std::cout << "in Unicode locale, iswpunct("
              << static_cast<std::wint_t>(c) << ") = "
              << static_cast<bool>(std::iswpunct(c)) << '\n';
}

⭐ Output: ⭐

and when you run it, you get:

in the default locale, iswpunct(0x2051) = false
in Unicode locale, iswpunct(0x2051) = true

πŸ‘‘ See also πŸ‘‘

  • ispunct(std::locale) β€” checks if a character is classified as punctuation by a locale (function template)
  • ispunct β€” checks if a character is a punctuation character (function)
  • C documentation for iswpunct

also, the page ships this whole ASCII values classification grid β€” I’m keeping every cell because bestie, data is data πŸ’…:

               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)

source/version/date vibe check: http://cppreference.com, 2024.06.10, std::iswpunct(3) β€” that’s the footer, mwah πŸ’‹

πŸ“¦ where this page comes from