Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Int(1digit)到char,不带任何函数_C++_C - Fatal编程技术网

C++ Int(1digit)到char,不带任何函数

C++ Int(1digit)到char,不带任何函数,c++,c,C++,C,我知道有类似的问题得到了回答,但我没有找到我想要的答案 有没有简单的方法将整数(1digit)转换成字符?类似于将char转换为int的方法,只需添加+'0'是 int i = 8; char ch = i+'0'; std::cout << ch << '\n'; inti=8; char ch=i+'0'; std::cout假设您询问如何从'9'到9,只需应用逆运算,即减去'0': char digit= value + '0'; int value= digit

我知道有类似的问题得到了回答,但我没有找到我想要的答案

有没有简单的方法将整数(1digit)转换成字符?类似于将char转换为int的方法,只需添加
+'0'

int i = 8;
char ch = i+'0';
std::cout << ch << '\n';
inti=8;
char ch=i+'0';

std::cout假设您询问如何从
'9'
9
,只需应用逆运算,即减去
'0'

char digit= value + '0';
int value= digit - '0';
你可以做:

int i = 5;
char x = (char)('0' + i); // x = '5'

将这些文件粘贴到头文件中:

char to_char( const int& x )
{
    return '0' + x;
}
int to_int( const char& c )
{
    return c - '0';
}

请参阅,将“0”减去
char
(示例:“9”)以将其转换为
int
,原因是0的ASCII值为48,1为49,依此类推,直到9为57。所以当你做一个'9'-'0'时,你基本上是在做一个57-48,等于9。所以你可以用任何你想要的方式来使用这个逻辑


我只是把它放在那里,让你能理解基金会

正如其他人所说,一个
+'0'
会给你想要的,但是如果你对它的工作原理感兴趣的话:


char
数据类型实际上只是一个数字,介于0和255之间,每个数字代表一个不同的字符。如果你看一个ASCII表格(),你会发现
'0'
是由数字
48
表示的,所以当你做
0+'0'
时,你得到的是48,
9+'0'
相当于
9+48
,给你
57
,你可以在表格上看到它代表了字符
'9'
。您可以对字母应用相同的原则(例如,添加
'A'
以将数字转换为字母)。

您可以执行
+48
+'0'
,两者都有效。整数
0
和字符
'0'
之间的差值为整数48。记住这一点。

你是想把
int
转换成
char
还是转换它?不,
+'0'
是如何从int转换成char的<代码>-'0'
是如何从char转换为int的。参数是常量引用的原因是什么?你是对的。没有必要这样做。我在考虑编译时优化,但是const引用不是真正需要的。不推荐C++中的类型化方法。使用流总是安全的。@ken你能详细说明一下吗?我的C++有点生疏了,那么在原始类型之间做显式转换的最佳方法是什么?还有,流是什么呢?#include int main(){char*str=“1234”;std::stringstream s_str(str);int i;s_str>>i;}-------------因为流是类型安全的,所以我们应该始终更喜欢它们,即使程序的足迹可能会增加,而且您提出的样式也是“C”类型转换。