跳到主要内容

C++ isdigit() 判断字符是否为数字

C++ 中的 isdigit() 函数用来检查给定的字符是否为数字。它定义在 cctype 头文件中。

示例

#include <iostream>
using namespace std;

int main() {

// 检查 '9' 是否为数字
cout << isdigit('9');

return 0;
}

// 输出:1

isdigit() 语法

isdigit() 函数的语法是:

isdigit(int ch);

这里,ch 是我们想要检查的字符。

isdigit() 参数

isdigit() 函数接受以下参数:

  • ch - 要检查的字符,转换为 int 类型或 EOF

isdigit() 返回值

isdigit() 函数返回:

  • 如果 ch 是数字,则返回非零整数值(true
  • 如果 ch 不是数字,则返回整数零(false

isdigit() 函数原型

定义在 cctype 头文件中的 isdigit() 函数原型是:

int isdigit(int ch);

正如我们所见,参数 ch 实际上是 int 类型的。这意味着 isdigit() 函数检查字符的 ASCII 值。

isdigit() 未定义行为

如果出现以下情况,isdigit() 的行为是未定义的:

  • ch 的值不能表示为 unsigned char
  • ch 的值不等于 EOF

示例:C++ isdigit()

#include <cctype>
#include <iostream>
#include <cstring>
using namespace std;

int main() {
char str[] = "hj;pq910js4";
int check;

cout << "字符串中的数字是:" << endl;

for (int i = 0; i < strlen(str); i++) {

// 检查 str[i] 是否为数字
check = isdigit(str[i]);

if (check)
cout << str[i] << endl;
}

return 0;
}

输出

字符串中的数字是:
9
1
0
4

这里,我们创建了一个 C 字符串 str。然后,我们使用 for 循环只打印字符串中的数字。循环从 i = 0 运行到 i = strlen(str) - 1

for (int i = 0; i < strlen(str); i++) {
...
}

换句话说,循环遍历整个字符串,因为 strlen() 返回 str 的长度。

在循环的每次迭代中,我们使用 isdigit() 函数检查字符串元素 str[i] 是否为数字。结果存储在 check 变量中。

check = isdigit(str[i]);

如果 check 返回非零值,我们打印字符串元素。

if (check)
cout << str[i] << endl;