<wctype.h> -- 类型
阅读:0       作者:严长生

wint_t 足以容纳所有宽字符的整数类型

wint_t 是一个通过 typedef 定义的整数类型,它足够大,能够容纳所有有效的 wchar_t 类型的宽字符,以及一个 WEOF。也就是说,wint_t 的长度必须大于等于 wchar_t。

<wctype.h> 和 <wchar.h> 头文件中包含了很多与宽字符处理有关的函数,其中有相当一部分函数的参数类型和返回值类型都是 wint_t。

大部分标准库将 wint_t 实现为 int 或者 short。

wchar_t 是宽字符类型,wint_t 是足以容纳所有 wchar_t 宽字符以及一个 WEOF 的类型,我们在定义宽字符时使用 wchar_t 类型,将宽字符传递给函数时转换为 wint_t 类型。请看下面的例子:
#include <stdio.h>
#include <wchar.h>
#include <wctype.h>
int main ()
{
    int i = 0;
    wchar_t c = L'A';  //定义单个宽字符
    wchar_t str[] = L"C语言 Java Python\n";  //定义宽字符串
   
    //将大写字母转换为小写字母输出
    if(iswupper(c)) c = towlower(c);
    putwchar(c);
    putwchar(L'\n');
   
    //只输出字母和空白符
    while(str[i])
    {
        if(iswalpha(str[i]) || iswspace(str[i])) putwchar(str[i]);
        i++;
    }
    return 0;
}
运行结果:
a
C Java Python

本例中,c 和 str 都是 wchar_t 类型的,而 iswupper()、towlower()、iswalpha()、iswspace() 的参数都是 wint_t 类型。

wchar_t 和 wint_t 的这种搭配,与 char 和 int 的搭配是类似的道理,更多内容请猛击《为什么<ctype.h>中的函数参数和返回值都是int类型》。