如何将低于 10 的 int 转换为 char 例如:
5 -> '5'
(在不使用 ASCII 表的情况下将 int 转换为 char)
问问题
2541 次
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 回答