宽字符分类和映射工具:wctype.h(C99)

作者:追风剑情 发布于:2020-8-24 17:48 分类:C

wctype.h库提供了一些与ctype.h中的字符函数类似的宽字符函数,以及其他函数。wctype.h还定义了下面三种类型和宏。

wctype.h中定义的类型和宏
类型/宏 描述
wint_t 整数类型,用于储存扩展字符集中的任意值,还可以储存至少一个不是扩展字符成员的值
wctrans_t 标量类型,可以表示本地化指定的字符映射
wctype_t 标量类型,可以表示本地化指定的字符分类
WEOF wint_t类型的常量表达式,不对应扩展字符集中的任何成员,相当于宽字符中的EOF,用于表示宽字符输入的文件结尾
在该库中,如果宽字符参数满足字符分类函数的条件,函数返回真(非0)。一般而言,因为单字节字符对应宽字符,所以如果ctype.h中对应的函数返回真,宽字符函数也返回真。

宽字节分类函数
函数原型 描述
int iswalnum(wint_t wc) 如果wc表示一个字母数字字符(字母或数字),函数返回真
int iswalpha(wint_t wc) 如果wc表示一个字母字符,函数返回真
int iswblank(wint_t wc) 如果wc表示一个空格,函数返回真
int iswcntrl(wint_t wc) 如果wc表示一个控制字符,函数返回真
int iswdigit(wint_t wc) 如果wc表示一个数字,函数返回真
int iswgraph(wint_t wc) 如果iswprint(wc)为真,且iswspace(wc)为假,函数返回真
int iswprint(wint_t wc) 如果wc表示一个可打印字符,函数返回真
int iswlower(wint_t wc) 如果wc表示一个小写字符,函数返回真
int iswpunct(wint_t wc) 如果wc表示一个标点字符,函数返回真
int iswspace(wint_t wc) 如果wc表示一个制表符、空格或换行符,函数返回真
int iswupper(wint_t wc) 如果wc表示一个大写字符,函数返回真
int iswxdigit(wint_t wc) 如果wc表示一个十六进制数字,函数返回真
该库还包含两个可扩展的分类函数,因为它们使用当前本地化的LC_CTYPE值进行分类。

可扩展的宽字符分类函数
函数原型 描述
int iswctype(wint_t wc, wctype_t desc) 如果wc具有desc描述的属性,函数返回真
wctype_t wctype(const char *property) wctype()函数构建了一个wctype_t类型的值,它描述了由字符串参数property指定的宽字符分类。如果根据当前本地化的LC_CTYPE类别,property识别宽字符分类有效,wctype()函数则返回非零值(可作为iswctype()函数的第2个参数);否则,函数返回0
wctype()函数的有效参数名即是宽字符分类函数名去掉isw前缀。例如,wctype("alpha")表示的是iswalpha()函数判断的字符类别。因此,调用iswctype(wc, wctype("alpha"))相当于调用iswalpha(wc),唯一的区别是前者使用LC_CTYPE类别进行分类。

该库还有4个与转换相关的函数。其中有两个函数分别与ctype.h库中toupper()和tolower()相对应。第3个函数是一个可扩展的版本,通过本地化的LC_CTYPE设置确定字符是大写还是小写。第4个函数为第3个函数提供合适的分类参数。

宽字符转换函数
函数原型 描述
wint_towlower(wint_t wc) 如果wc是大写字母,返回其小写形式;否则返回wc
wint_t towupper(wint_t wc) 如果wc是小写字母,返回其大写形式,否则返回wc
wint_t towctrans(wint_t wc, wctrans_t desc) 如果desc等于wctrans("lower")的返回值,函数返回wc的小写形式(由LC_CTYPE设置确定);如果desc等于wctrans(upper)的返回值,函数返回wc的大写形式(由LC_CTYPE设置确定)
wctrans_t wctrans(const char *property) 如果参数是"lower"或"upper",函数返回一个wctrans_t类型的值,可用作towctrans()的参数并反映LC_CTYPE设置,否则函数返回0

标签: C语言

Powered by emlog  蜀ICP备18021003号   sitemap

川公网安备 51019002001593号