在C/C++中使用isdigit()

时间:2020-02-23 14:29:59  来源:igfitidea点击:

在本文中,我们将介绍如何在C/C++中使用isdigit()函数。
这是检查任何值是否为数字的非常简单的方法。
让我们通过一些简单的示例来看看如何使用此功能。

C/C++中isdigit()的基本语法

此函数采用字符值" val",如果值是数字,则返回0或者1。

这是在<ctypes.h>头文件中定义的,因此我们还必须包含此文件。

#include <ctypes.h>

int isdigit(char value);

该值的格式必须可以转换为"无符号字符",例如正整数/ASCII字符。

但是请注意,整数将不被视为数字,因为只考虑了它们的ascii等效项。

在C++中使用isdigit()

虽然您也可以简单地将C代码复制并粘贴到C++,但是C++标准库已经实现了isdigit()

这可以使我们的生活变得更加简单,因为我们可以直接从std名称空间使用它:

std::isdigit(char value);

它也将返回一个bool值,但这等效于C版本返回的整数值0和1!

在C/C++中使用isdigit()

现在让我们看一些示例,以检查值是否为数字。

我们将使用一些整数和一些字符,并在它们上应用isdigit()

#include <stdio.h>
#include <ctype.h>

int main() {
  int a = 9;
  int b = 10;
  int c = 49;
  char d = 'a';
  char e = '0';

  printf("Is %d a digit?\n", a);
  if (isdigit(a)) printf("Yes\n"); else printf("No\n");
  
  printf("Is %d a digit?\n", b);
  if (isdigit(b)) printf("Yes\n"); else printf("No\n");
  
  printf("Is %d a digit?\n", c);
  if (isdigit(c)) printf("Yes\n"); else printf("No\n");
  
  printf("Is %c a digit?\n", d);
  if (isdigit(d)) printf("Yes\n"); else printf("No\n");
  
  printf("Is %c a digit?\n", e);
  if (isdigit(e)) printf("Yes\n"); else printf("No\n");
  return 0;
}

输出

Is 9 a digit?
No
Is 10 a digit?
No
Is 49 a digit?
Yes
Is a a digit?
No
Is 0 a digit?
Yes

如您所见,整数9和10不被视为数字。
但是整数49的ASCII字符为" 0",这是一个数字!

它与" 0"完全相同,因此,根据" isdigit(char)",此字符也是一个数字!