Syntax
#include <wctype.h> int iswctype(wint_t wc, wctype_t wc_prop);Description
iswctype determines whether the wide character wc has the property wc_prop. It is similar in function to the iswalnum through isxdigit functions, but with iswctype you can specify the property to check for, or check for a property other than the standard ones.
You must obtain the wc_prop value from a call to wctype. If you do not, or if the LC_CTYPE category of the locale was modified after you called wctype, the behavior of iswctype is undefined.
The value of wc must be representable as an unsigned wchar_t, or WEOF.
The following strings correspond to the standard (basic) character classes
or properties: cols='15 15 15 15'.
┌──────────────────────────────────────────────────────────────────────────────┐
│ " │
│ "alnum" │
│ "alpha" │
│ "blank" " │
├──────────────────────────────────────────────────────────────────────────────┤
│ " │
│ "cntrl" │
│ "digit" │
│ "graph" " │
├──────────────────────────────────────────────────────────────────────────────┤
│ " │
│ "lower" │
│ "print" │
│ "punct" " │
├──────────────────────────────────────────────────────────────────────────────┤
│ " │
│ "space" │
│ "upper" │
│ "xdigit" " │
└──────────────────────────────────────────────────────────────────────────────┘
The following shows calls to wctype and indicates the equivalent isw* function:
iswctype(wc, wctype("alnum")); /* iswalnum(wc); */ iswctype(wc, wctype("alpha")); /* iswalpha(wc); */ iswctype(wc, wctype("blank")); /* iswblank(wc); */ iswctype(wc, wctype("cntrl")); /* iswcntrl(wc); */ iswctype(wc, wctype("digit")); /* iswdigit(wc); */ iswctype(wc, wctype("graph")); /* iswgraph(wc); */ iswctype(wc, wctype("lower")); /* iswlower(wc); */ iswctype(wc, wctype("print")); /* iswprint(wc); */ iswctype(wc, wctype("punct")); /* iswpunct(wc); */ iswctype(wc, wctype("space")); /* iswspace(wc); */ iswctype(wc, wctype("upper")); /* iswupper(wc); */ iswctype(wc, wctype("xdigit")); /* iswxdigit(wc); */Returns
iswctype returns a nonzero value if the wide character has the property tested for. If the value for wc or wc_prop is not valid, the behavior is undefined.
This example analyzes all characters between 0x0 and 0xFF. The output of this example is a 256-line table showing the characters from 0 to 255, indicating whether they have the properties tested for.
#include <locale.h> #include <stdio.h> #include <wctype.h> #define UPPER_LIMIT 0xFF int main(void) { wint_t wc; setlocale(LC_ALL, "En_US"); for (wc = 0; wc <= UPPER_LIMIT; wc++) { printf("%#4x ", wc); printf("%lc", iswctype(wc, wctype("print")) ? (wchart)wc : ' '); printf("%s", iswctype(wc, wctype("alnum")) ? " AN" : " "); printf("%s", iswctype(wc, wctype("alpha")) ? " A " : " "); printf("%s", iswctype(wc, wctype("blank")) ? " B " : " "); printf("%s", iswctype(wc, wctype("cntrl")) ? " C " : " "); printf("%s", iswctype(wc, wctype("digit")) ? " D " : " "); printf("%s", iswctype(wc, wctype("graph")) ? " G " : " "); printf("%s", iswctype(wc, wctype("lower")) ? " L " : " "); printf("%s", iswctype(wc, wctype("punct")) ? " PU" : " "); printf("%s", iswctype(wc, wctype("space")) ? " S " : " "); printf("%s", iswctype(wc, wctype("print")) ? " PR" : " "); printf("%s", iswctype(wc, wctype("upper")) ? " U " : " "); printf("%s", iswctype(wc, wctype("xdigit")) ? " H " : " "); putchar('\n'); } return 0; /**************************************************************************** The output should be similar to : : 0x1e C 0x1f C 0x20 B S PR 0x21 ! G PU PR 0x22 " G PU PR 0x23 # G PU PR 0x24 $ G PU PR 0x25 % G PU PR : 0x30 0 AN D G PR H 0x31 1 AN D G PR H 0x32 2 AN D G PR H 0x33 3 AN D G PR H 0x34 4 AN D G PR H 0x35 5 AN D G PR H : 0x43 C AN A G PR U H 0x44 D AN A G PR U H 0x45 E AN A G PR U H 0x46 F AN A G PR U H 0x47 G AN A G PR U : ****************************************************************************/ }Related Information