如果它是数字c ++,则将int转换为char

时间:2014-10-10 14:13:41

标签: c++ char int

我想知道如何测试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很多

3 个答案:

答案 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;

原因是角色0ASCII table中的第一个数字,后面跟着1,2,3等......

修改

正如Christian Hackl在评论中指出c++ does not require an implementation to use ASCII,尽管 保证数字09由连续的数字表示整数值。