std::iswprint - cppreference.com
Namespaces
Variants

std::iswprint

From cppreference.com
 
 
 
 
Defined in header <cwctype>
int iswprint( std::wint_t ch );

Checks if the given wide character can be printed, i.e. it is either a number (0123456789), an uppercase letter (ABCDEFGHIJKLMNOPQRSTUVWXYZ), a lowercase letter (abcdefghijklmnopqrstuvwxyz), a punctuation character (!"#$%&'()*+,-./:;<=>?@[\]^_`{!}~), space or any printable character specific to the current C locale.

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.

Parameters

ch - wide character

Return value

Non-zero value if the wide character can be printed, zero otherwise.

Notes

ISO 30112 specifies which Unicode characters are include in POSIX print category.

Example

#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

checks if a character is classified as printable by a locale
(function template) [edit]
checks if a character is a printing character
(function) [edit]
C documentation for iswprint