c++字符串123转换为整型123

其中有一句代码:
sum=sum*10+str[i]-'0'
是什么意思
求详细解释

str[i]取到的是一个字符,它有着自己的一个ASCII值,str[i]-'0' 就代表str[i]的ASCII码值减去0的ASCII值,差值得到的就是数字本身了
举个例子: 字符‘0’的ASCII是48 , 而字符‘1’是49,‘1’-‘0’也就是int的1

整个公式就相当于是把字符串按位拆分出来计算: 两位数 = 十位 * 10 + 个位

字符串的前一位加上他的后一位sum*10+str[i]而后的-'0'防止溢出

把字符串处理成2位数的相加,相当于十位+个位,就是sum*10+str[i]