在以下代码中,我无法理解为什么string
会以这种方式转换为int
。
为什么它与0
使用总和?
string mystring;
vector<int> myint;
mystring[i+1]=myint[i]+'0';
答案 0 :(得分:2)
此代码将int(可能是数字)转换为表示它的字符。
由于字符是连续的,并且char
可以被视为整数,因此表示某个数字的字符实际上可以通过它与'0'
的距离来描述。这样,0
变成了字符'0'
,'5'
是大于'0'
的字符,依此类推。
答案 1 :(得分:2)
这是一个有效的,旧的学校和危险的方法来获得单个数字的char表示。 '0'
将转换为包含其ASCII代码的int
(&#39; 0&#39;为0x30),然后将其添加到myint[i]
。如果myint[i]
为9
或更低,您可以将myint[i]
转换为字符,您将获得结果数字作为文字。
如果您向9
'0'
的内容,事情将无法实现预期效果
您还可以从其char表示中获取一个数字:
char text = '5';
int digit = text - '0';
答案 2 :(得分:1)
'0'
表达式不是字符串类型,它是存储ASCII字符的char类型,也可以表示0到255之间的数字。因此,在算术运算中,char的行为类似于整数类型。
在C字符串中,a表示为char:static(char str[N]
)或dynamic(char *str = new char[n]
)的数组。字符串文字放入双引号("string"
)。
因此,'0'
是char,"0"
是char [1]