例如,如何将10以下的int转换为char:
5 -> '5‘
(不使用ASCII表将int转换为字符)
发布于 2013-06-26 13:01:59
由于数字在标准字符集中总是连续的,所以可以编写:
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之后的每个字符的值应大于前一个字符的值。
同样的情况也适用于C++。
n3337,§2.3字符集 在源字符集和执行基本字符集中,上述十进制数字列表中0之后的每个字符的值应大于前一个字符的值。
发布于 2013-06-26 13:26:25
如果它是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-26 13:02:09
这里有个选择
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];
https://stackoverflow.com/questions/17320769
复制相似问题