📅  最后修改于: 2023-12-03 14:59:35.988000             🧑  作者: Mango
许多编程语言中都有类似iswxdigit()函数的判断函数,用于判断一个字符是否为16进制数字字符。在C/C++中,iswxdigit()函数就是用于判断一个宽字符是否为16进制数字字符。
int iswxdigit(wint_t wc);
函数返回值为非0表示是16进制数字字符,返回0表示不是16进制数字字符。其中,参数wc是待判断的宽字符,即wchar_t类型。
在C/C++代码中,调用iswxdigit()函数需要先包含头文件<wctype.h>,并且需要注意locale的设置。示例如下:
#include <stdio.h>
#include <wctype.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, ""); //设置locale
wchar_t wc1 = L'0', wc2 = L'A', wc3 = L' '; //待判断字符
if (iswxdigit(wc1))
wprintf(L"%lc is hexadecimal digit\n", wc1);
if (!iswxdigit(wc2))
wprintf(L"%lc is not hexadecimal digit\n", wc2);
if (!iswxdigit(wc3))
wprintf(L"%lc is not hexadecimal digit\n", wc3);
return 0;
}
在示例代码中,首先通过setlocale()函数设置locale为空,表示使用当前环境的locale。然后定义三个待判断的宽字符,分别是'0'、'A'和空格符。接着用iswxdigit()函数对这三个字符进行判断,若是16进制数字字符则输出“ is hexadecimal digit”,否则输出“ is not hexadecimal digit”。
在示例代码中,我们先使用setlocale()函数设置当前环境的locale。这是因为在某些语言中,宽字符可能不是用ASCII编码的,因此需要根据不同的locale设置来进行判断。
接着,我们定义了三个待判断的宽字符。第一个是16进制数字字符'0',可以看到输出结果是“ is hexadecimal digit”。第二个是字符'A',虽然在16进制中也表示数字,但它本身不是数字字符,因此输出结果是“ is not hexadecimal digit”。第三个字符是空格,不是16进制数字字符,因此输出结果也是“ is not hexadecimal digit”。