int iswxdigit (wint_t wc);
iswxdigit() 函数用来检测一个宽字符是否是十六进制数字。
十六进制数字包括:0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
iswxdigit() 是 isxdigit()(位于<ctype.h>中)的宽字符版本:如果参数 wc 能够被 wctob() 转换为单个字节的形式,并且转换后的字符使用 isxdigit() 检测返回“真”(非零值),那么 iswxdigit() 也一定会将 wc 判定为十六进制数字。
返回值为非零(真)表示wc是十六进制数字,返回值为零(假)表示wc不是十六进制数字。
#include <stdio.h>
#include <wchar.h>
#include <wctype.h>
int main ()
{
wchar_t str[] = L"E6fd";
long int number;
if (iswxdigit(str[0]))
{
number = wcstol (str,NULL,16);
wprintf (L"The hexadecimal number %lx is %ld.\n",number,number);
}
return 0;
}
运行结果:
本例中,isxwdigit() 用来检测 str 字符串中第 0 个宽字符是否是有效的十六进制数字,如果是,那么使用 wcstol() 函数将 str 转换为十进制数字。