我想知道如何测试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很多
答案 0 :(得分:0)
要将单个数字从int转换为ascii / utf8字符,可以进行非常简单的转换:
char num2 = static_cast<char>('0' + num);
答案 1 :(得分:0)
此:
char num2 = (char)num;
没有意义。你将一个2转换为一个char,它将为你提供STX的ASCII码,一个特殊字符(http://www.asciitable.com/)。
你可能想要这个:
char num2 = '0' + num;
这样做会给你一个从ASCII&#39; 0&#39;计算的字符,所以它最多可以工作9,之后你会得到ASCII表中的其他字符。
答案 2 :(得分:0)
您实际上并未将num
转换为数字。您的第3行基本上会产生:
char num2 = (char)2;
十进制值为2的ASCII字符不一个数字。实际上,它不可打印。将单个数字整数转换为可打印的char
的最简单方法是向其添加'0'
:
char num2 = '0' + num;
原因是角色0
是ASCII table中的第一个数字,后面跟着1,2,3等......
正如Christian Hackl在评论中指出c++ does not require an implementation to use ASCII,尽管 保证数字0
到9
由连续的数字表示整数值。