std::isdigit
来自cppreference.com
| 定义于头文件 <cctype>
|
||
| int isdigit( int ch ); |
||
检查给定的字符是否 10 个十进制数位: 0123456789 之一。
若 ch 的值不能表示为 unsigned char 且不等于 EOF ,则行为未定义。
目录 |
[编辑] 参数
| ch | - | 要分类的字符 |
[编辑] 返回值
若字符为数字字符则为非零值,否则为零。
[编辑] 注意
isdigit 和 isxdigit 是仅有的不受当前安装的 C 本地环境影响的标准窄字符分类函数。尽管某些实现(例如 Microsoft 在 1252 代码页)可能分类另外的单字节字符为数字。
同所有其他来自 <cctype> 的函数,若参数值既不能表示为 unsigned char 又不等于 EOF 则 std::isdigit 的行为未定义。为了以简单的 char (或 signed char )安全使用此函数,首先要将参数转换为 unsigned char :
bool my_isdigit(char ch) { return std::isdigit(static_cast<unsigned char>(ch)); }
类似地,迭代器的值类型为 char 或 signed char 时,不应直接将它们用于标准算法。而是要首先转换值为 unsigned char :
int count_digits(const std::string& s) { return std::count_if(s.begin(), s.end(), // static_cast<int(*)(int)>(std::isdigit) // 错误 // [](int c){ return std::isdigit(c); } // 错误 // [](char c){ return std::isdigit(c); } // 错误 [](unsigned char c){ return std::isdigit(c); } // 正确 ); }
[编辑] 参阅
| 检查字符是否被本地环境分类为数字 (函数模板) | |
| 检查宽字符是否为数字 (函数) | |
| isdigit的 C 文档
| |
| ASCII 值 (十六进制) |
字符 |
isdigit |
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 - 8 | 0x00-0x08
|
控制码 (NUL 等)
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 9 | 0x09
|
制表符 (\t)
|
≠0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 10 - 13 | 0x0A-0x0D
|
空白字符 (\n,\v,\f,\r)
|
≠0
|
0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 14 - 31 | 0x0E-0x1F
|
控制码 | ≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 32 | 0x20
|
空格 | 0
|
≠0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 33 - 47 | 0x21-0x2F
|
!"#$%&'()*+,-./
|
0
|
≠0
|
0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 48 - 57 | 0x30-0x39
|
0123456789
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
0
|
0
|
0
|
≠0
|
≠0
|
| 58 - 64 | 0x3a-0x40
|
:;<=>?@
|
0
|
≠0
|
0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 65 - 70 | 0x41-0x46
|
ABCDEF
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
≠0
|
≠0
|
0
|
0
|
≠0
|
| 71 - 90 | 0x47-0x5A
|
GHIJKLMNOPQRSTUVWXYZ
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
≠0
|
≠0
|
0
|
0
|
0
|
| 91 - 96 | 0x5B-0x60
|
[\]^_`
|
0
|
≠0
|
0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 97 -102 | 0x61-0x66
|
abcdef
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
≠0
|
0
|
≠0
|
0
|
≠0
|
| 103-122 | 0x67-0x7A
|
ghijklmnopqrstuvwxyz
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
≠0
|
0
|
≠0
|
0
|
0
|
| 123-126 | 0x7B-0x7E
|
{|}~
|
0
|
≠0
|
0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 127 | 0x7F
|
退格字符 (DEL)
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|

