wctype.h 提供 ctype.h 里面函数的宽字符版本。
下面函数判断宽字符的类型。
iswctype()
是上一节各种宽字符类型判断函数的通用版本,必须与wctype()
配合使用。
int iswctype(wint_t wc, wctype_t desc);
iswctype()
接受两个参数,第一个参数是一个需要判断类型的宽字符,第二个参数是宽字符类型描述,来自wctype()
的返回值。
如果宽字符属于指定类型,iswctype()
返回一个非零值,否则返回零。
wctype()
用来获取某个种类宽字符的类型描述。
wctype_t wctype(const char* property);
wctype()
的参数是一个给定的字符串,可用的值如下:alnum、alpha、blank、cntrl、digit、graph、lower、print、punct、space、upper、xdigit。
wctype()
的返回值的类型为 wctype_t,通常是一个整数。如果参数是一个无效值,则返回0
。
if (iswctype(c, wctype("digit")))
// 相当于
if (iswdigit(c))
上面示例用来判断宽字符c
是否为数值,相当于iswdigit()
。
iswctype()
的完整类型判断如下。
iswctype(c, wctype("alnum")) // 相当于 iswalnum(c)
iswctype(c, wctype("alpha")) // 相当于 iswalpha(c)
iswctype(c, wctype("blank")) // 相当于 iswblank(c)
iswctype(c, wctype("cntrl")) // 相当于 iswcntrl(c)
iswctype(c, wctype("digit")) // 相当于 iswdigit(c)
iswctype(c, wctype("graph")) // 相当于 iswgraph(c)
iswctype(c, wctype("lower")) // 相当于 iswlower(c)
iswctype(c, wctype("print")) // 相当于 iswprint(c)
iswctype(c, wctype("punct")) // 相当于 iswpunct(c)
iswctype(c, wctype("space")) // 相当于 iswspace(c)
iswctype(c, wctype("upper")) // 相当于 iswupper(c)
iswctype(c, wctype("xdigit")) // 相当于 iswxdigit(c)
wctype.h 提供以下宽字符大小写转换函数。
先看towlower()
和towupper()
的用法示例。
towlower(L'B') // b
towupper(L'e') // E
towctrans()
和wctrans()
的原型如下。
wint_t towctrans(wint_t wc, wctrans_t desc);
wctrans_t wctrans(const char* property);
下面是它们的用法示例。
towctrans(c, wctrans("toupper")) // 相当于 towupper(c)
towctrans(c, wctrans("tolower")) // 相当于 towlower(c)