如果int是数字c++,则测试将其转换为char

Test converted int to char if it is number c++

本文关键字:转换 char 测试 int 数字 c++ 如果      更新时间:2023-10-16

我想知道如何测试char是否是数字。int已经被转换为char,稍后我想看看这个char是否是一个数字。

int num = 2;
char number = '2';
char num2 = (char)num;
cout << "Non comverted: " << number << " " << num2 << endl;
cout << "comverted: " << static_cast<int>(number) << " " << static_cast<int>(num2) << endl;
if (isdigit(number))
  cout << "number" << endl;
else if (isdigit(num2))
  cout << "num2" << endl;
else cout << "none" << endl;

当我运行这个第二个if时也应该能够关联到true。

我之所以希望能够做到这一点,是因为我将许多不同的值存储到一个char数组中,稍后我想知道某个值何时是数字。

Thanx很多

您实际上并没有将num转换为数字。你的第3行基本上导致:

char num2 = (char)2;

十进制值为2的ASCII字符是而不是数字。事实上,它是不可打印的。将个位数整数转换为可打印的char的最简单方法是将'0'添加到其中:

char num2 = '0' + num;

原因是字符0是ASCII表中的第一个数字,后面紧跟着1、2、3等。

编辑

正如Christian Hackl在评论中指出的那样,c++不需要使用ASCII的实现,尽管可以保证数字09由连续的整数值表示。

要将个位数从int转换为ascii/utf8字符,有一个非常简单的转换:

char num2 = static_cast<char>('0' + num);

这:

char num2 = (char)num;

没有道理。您将2转换为一个字符,该字符将为STX提供ASCII代码,这是一个特殊字符(http://www.asciitable.com/)。

你可能想要这个:

char num2 = '0' + num;

这样做的目的是给你一个从ASCII"0"开始计数的字符,所以它最多可以工作到9,之后你会得到ASCII表中的其他字符。