跳转到内容

C 编程/wctype.h

来自维基教科书,自由的教科书

在 C 编程语言中,wctype.h 是标准库中的一个头文件,包含用于分类和映射宽字符的各种函数和宏。处理(普通,非宽)字符的对应头文件是 <ctype.h>

该头文件声明了 (来自 <wchar.h>) wint_twctype_t 类型,以及 WEOF 宏。[1] (wint_t 能够存储任何宽字符或 WEOF 值。) wctrans_t 类型也被声明,它表示字符之间的映射。[1]

字符分类函数

[编辑 | 编辑源代码]

这些函数根据当前区域设置,返回非零/零,具体取决于参数是否在特定类别中。POSIX:2008 指定了这些函数的替代版本,这些版本以 _l 结尾,并接受区域设置 (locale_t) 作为附加参数。

声明 如果ch 是 … 返回非零值
int iswalnum(wint_t wc); 字母数字
int iswalpha(wint_t wc); 字母
int iswblank(wint_t wc); 空格
int iswcntrl(wint_t wc); 控制字符
int iswctype(wint_t wc, wctype_t charclass); charclass
int iswdigit(wint_t wc); 数字
int iswgraph(wint_t wc); 可见字符
int iswlower(wint_t wc); 小写字母
int iswprint(wint_t wc); 可打印
int iswpunct(wint_t wc); 标点符号
int iswspace(wint_t wc); 空白符
int iswupper(wint_t wc); 大写字母
int iswxdigit(wint_t wc); 十六进制数字

字符映射函数

[编辑 | 编辑源代码]

这些函数接收一个宽字符,并对其应用一些映射。

声明 描述
wint_t towctrans(wint_t ch, wctrans_t desc); 根据映射desc 映射ch
wint_t towlower(wint_t ch); 如果ch 是大写字母,则将其映射为小写,否则返回不变
wint_t towupper(wint_t ch); 如果ch 是小写字母,则将其映射为大写,否则返回不变

其他函数

[编辑 | 编辑源代码]

这些函数从字符串创建用于其他函数的值。请注意,iswdigit(c) 等同于 iswctype(c, wctype("digit")),而 toupper(c) 等同于 towctrans(c, wctrans("toupper"))[2]

声明 描述
wctrans_t wctrans(const char *charclass); 返回一个字符映射,可与 towctrans 一起使用
wctype_t wctype(const char *property); 返回一个字符类别,可与 iswctype 一起使用

参考文献

[编辑 | 编辑源代码]
  1. a b wctype.h: 宽字符分类和映射实用程序 – 基本定义参考,The Single UNIX® Specification,Issue 7 from The Open Group
  2. 当前标准 (包括技术勘误 TC1、TC2 和 TC3 的 C99)PDF (3.61 MB). 第 397、398 和 400 页。
华夏公益教科书