不使用ASCII将int转换为char

时间:2013-06-26 13:01:10

标签: c++ c

如何将低于10的int转换为char,例如:
5 - > '5'
(不使用ASCII表将int转换为char)

4 个答案:

答案 0 :(得分:13)

由于数字在标准字符集中始终是连续的,因此您可以写:

int number = 5;
int character = number + '0';

/* Here, character == '5' */

例如,参见C11标准。

  

n1570,§5.2.1字符集

     

10位十进制数字0 1 2 3 4 5 6 7 8 9

     

[...]

     

在源和执行基本字符集中,上述十进制数字列表中0之后的每个字符的值应比前一个值大1。

同样适用于C ++。

  

n3337,§2.3字符集

     

在源和执行基本字符集中,上述十进制数字列表中0之后的每个字符的值应大于前一个值的值。

答案 1 :(得分:3)

如果是0-9号,最好使用:

int i = 5;
char ch = i + '0';

但可能最好的选择是使用itoa()

int i = 124;
char buffer[33];
itoa(i, buffer, 10);    //10 mean decimal.

答案 2 :(得分:1)

这是一个选项

char c;
int x;
//...
switch ( x )
{
   case 1:
      c = '1';
      break;
   //and so on
}

另一个:

std::map<int, char> mapping;
mapping[1] = '1';
//...

char c = mapping[4];

答案 3 :(得分:1)

我不确定我明白你的意思是“不使用ASCII表”,但是

int i = 5;
char c = i + '0';

会做你想要的。 '0''9'的字符代码保证连续且顺序正确。