Namespaces
Variants

iswxdigit

From zh.cppreference.net
< c ‎ | string ‎ | wide
定义于头文件 <wctype.h>
int iswxdigit ( wint_t ch ) ;
(C95起)

检查给定的宽字符在窄化后是否对应十六进制数字字符,即以下字符之一: 0123456789abcdefABCDEF 。

目录

参数

ch - 宽字符

返回值

若宽字符为十六进制数字字符则返回非零值,否则返回零。

注释

iswdigit 和 iswxdigit 是唯一不受当前安装的C语言区域设置影响的标准宽字符分类函数。

示例

某些区域设置提供额外的字符类别,用于检测非ASCII数字

#include <locale.h>
#include <stdio.h>
#include <wchar.h>
#include <wctype.h>
void test(wchar_t a3, wchar_t u3, wchar_t j3)
{
    printf("\t  '%lc'  '%lc' '%lc'\n", a3, u3, j3);
    printf("iswxdigit: %d    %d    %d\n",
           !!iswxdigit(a3),
           !!iswxdigit(u3),
           !!iswxdigit(j3));
    printf("jdigit:    %d    %d    %d\n",
           !!iswctype(a3, wctype("jdigit")),
           !!iswctype(u3, wctype("jdigit")),
           !!iswctype(j3, wctype("jdigit")));
}
int main(void)
{
    wchar_t a3 = L'9';  // the ASCII digit 9
    wchar_t u3 = L'〩'; // the CJK numeral 9
    wchar_t j3 = L'9'; // the full-width digit 9
    setlocale(LC_ALL, "en_US.utf8");
    puts("In American locale:");
    test(a3, u3, j3);
    setlocale(LC_ALL, "ja_JP.utf8");
    puts("\nIn Japanese locale:");
    test(a3, u3, j3);
}

可能的输出:

In American locale:
	  '9'  '〩' '9'
iswxdigit: 1    0    0
jdigit:    0    0    0
In Japanese locale:
	  '9'  '〩' '9'
iswxdigit: 1    0    0
jdigit:    0    0    1

参考文献

  • C23 标准 (ISO/IEC 9899:2024):
  • 7.30.2.1.12 iswxdigit 函数 (页码: 待定)
  • C17标准(ISO/IEC 9899:2018):
  • 7.30.2.1.12 iswxdigit函数(页码:待定)
  • C11 标准 (ISO/IEC 9899:2011):
  • 7.30.2.1.12 iswxdigit 函数 (p: 451)
  • C99标准(ISO/IEC 9899:1999):
  • 7.25.2.1.12 iswxdigit函数(页码:397)

另请参阅

检查字符是否为十六进制字符
(函数)
C++ documentation 关于 iswxdigit
**说明**: - 保留了所有HTML标签和属性 - ` `标签内的十六进制转义序列`\x61`-`\x66`、八进制转义序列`\141`-`\146`及字符字面量`abcdef`未翻译 - 数值`0`和`≠0`作为C++布尔判断结果保留原格式 - 表格结构及样式属性完整保留
ASCII 值 字符

iscntrl
iswcntrl

isprint
iswprint

isspace
iswspace

isblank
iswblank

isgraph
iswgraph

ispunct
iswpunct

isalnum
iswalnum

isalpha
iswalpha

isupper
iswupper

islower
iswlower

isdigit
iswdigit

isxdigit
iswxdigit

十进制 十六进制 八进制
0–8 \x0 – \x8 \0 – \10 控制字符 ( NUL 等) ≠0 0 0 0 0 0 0 0 0 0 0 0
9 \x9 \11 制表符 ( \t ) ≠0 0 ≠0 ≠0 0 0 0 0 0 0 0 0
10–13 \xA – \xD \12 – \15 空白字符 ( \n , \v , \f , \r ) ≠0 0 ≠0 0 0 0 0 0 0 0 0 0
14–31 \xE – \x1F \16 – \37 控制码 ≠0 0 0 0 0 0 0 0 0 0 0 0
32 \x20 \40 空格符 0 ≠0 ≠0 ≠0 0 0 0 0 0 0 0 0
33–47 \x21 – \x2F \41 – \57 !"#$%&'()*+,-./ 0 ≠0 0 0 ≠0 ≠0 0 0 0 0 0 0
48–57 \x30 – \x39 \60 – \71 0123456789 0 ≠0 0 0 ≠0 0 ≠0 0 0 0 ≠0 ≠0
58–64 \x3A – \x40 \72 – \100 :;<=>?@ 0 ≠0 0 0 ≠0 ≠0 0 0 0 0 0 0
65–70 \x41 – \x46 \101 – \106 ABCDEF 0 ≠0 0 0 ≠0 0 ≠0 ≠0 ≠0 0 0 ≠0
71–90 \x47 – \x5A \107 – \132 GHIJKLMNOP
QRSTUVWXYZ
0 ≠0 0 0 ≠0 0 ≠0 ≠0 ≠0 0 0 0
91–96 \x5B – \x60 \133 – \140 [\]^_` 0 ≠0 0 0 ≠0 ≠0 0 0 0 0 0 0
97–102 \x61 – \x66 \141 – \146 abcdef 0 ≠0 0 0 ≠0 0 ≠0 ≠0 0 ≠0 0 ≠0
103–122 \x67 – \x7A \147 – \172 ghijklmnop
qrstuvwxyz
0 ≠0 0 0 ≠0 0 ≠0 ≠0 0 ≠0 0 0
123–126 \x7B – \x7E \173 – \176 {|}~ 0 ≠0 0 0 ≠0 ≠0 0 0 0 0 0 0
127 \x7F \177 退格字符 ( DEL ) ≠0 0 0 0 0 0 0 0 0 0 0 0