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
Run this code
#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) | |
| checks if a character is a printing character (function) | |
C documentation for iswprint
| |
