您当前的位置:首页 > 计算机 > 编程开发 > VC/VC++

wctype.h头文件详解

时间:12-25来源:作者:点击数:

<wctype.h> 是一个与宽字符处理有关的头文件,它包含了一系列用于检测和转换单个宽字符的函数。

<wctype.h> 是 <ctype.h> 的宽字符版本,<wctype.h> 的出现晚于 <ctype.h>:<ctype.h> 在最初的 ANSI C 标准(1990年发布)中就已经定义了,而 <wctype.h> 在 ANSI C 增补1(Amendment 1)中才引入,这已经是 1995 年的事情了。

引入 <wctype.h> 头文件后,C就能够更好地处理英文以外的语言了,例如汉语、日语、韩语、德语等,此时C才是真正意义上的全球化编程语言。 

宽字符分类函数
iswalnum() 判断一个宽字符是否是字母或数字
iswalpha() 判断一个宽字符是否是字母
iswblank() 判断一个宽字符是否是空白符
iswcntrl() 判断一个宽字符是否是控制字符
iswdigit() 判断一个宽字符是否是十进制数字
iswgraph() 判断一个宽字符是否带有图形
iswlower() 判断一个宽字符是否是小写字母
iswprint() 判断一个宽字符是否是可打印字符
iswpunct() 判断一个宽字符是否是标点符号
iswspace() 判断一个宽字符是否是空白符
iswupper() 判断一个宽字符是否是大写字母
iswxdigit() 判断一个宽字符是否是十六进制数字

 

宽字符转换函数
towlower() 将大写字母转换为小写字母
towupper() 将小写字母转换为大写字母

 

扩展的宽字符分类/转换函数
iswctype() 判断宽字符是否属于某个分类
towctrans() 宽字符转换函数(将宽字符转换为其它类型)
wctrans() 返回一个标量类型的字符转换
wctype() 返回一个标量类型的字符分类

 

类型
wctrans_t 用来表示宽字符转换的标量类型
wctype_t 用来表示宽字符分类的标量类型
wint_t 足以容纳所有宽字符的整数类型

 

WEOF 宽字符版的文件结束标志

深入理解 <wctype.h>

<wctype.h> 的设计非常具有弹性,不仅将 <ctype.h> 中的所有函数都进行了宽字符化,还支持了更多的分类和转换。

我们经常见到的字符分类是字母、数字、标点、空白符等,基本上全球所有的语言系统都支持这几种字符分类,它们具有普遍性。除了这些通用的分类,不同的语言系统可能还具有自己独特的分类,例如日语中还包含了片假名、平假名、汉字等分类。

我们可以针对每个通用的分类定义一个函数,但是却不能针对特定语言相关的分类来定义函数,因为:

  • 这些函数在其他的语言文化中不能使用;
  • 特定语言相关的分类可能非常多,会导致定义大量的函数。

于是C语言开发者们想了一个办法,定义一个通用的、不针对特定语言文化的函数,由用户自己指定分类名称,这样用一个函数就可以检测所有分类了,包括通用的分类和特定语言相关的分类,这个函数就是 iswctype()

宽字符转换也是类似的道理。我们经常见到的是大小写字母之间的转换,全球所有的语言系统都支持这两种转换,所以针对它们定义了两个函数,分别是 towlower() 和 towupper()。如果是特定语言相关的转换,例如日语中的片假名转平假名、汉字转平假名等,那么可以使用 towctrans() 函数,该函数可以由用户来指定转换的形式。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门