1

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

4

4 回答 4

13

由于数字在标准字符集中总是连续的,你可以写:

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

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

例如,参见 C11 标准。

n1570, § 5.2.1 字符集

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

[...]

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

这同样适用于 C++。

n3337, § 2.3 字符集

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

于 2013-06-26T13:01:59.997 回答
3

如果它是数字 0-9,最好使用:

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

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

int i = 124;
char buffer[33];
itoa(i, buffer, 10);    //10 mean decimal.
于 2013-06-26T13:26:25.577 回答
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];
于 2013-06-26T13:02:09.297 回答
1

我不确定我是否理解“不使用 ASCII 表”的意思,但是

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

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

于 2013-06-26T13:02:45.183 回答