为什么C ++字符串转换为int?

时间:2015-09-27 13:48:23

标签: c++ string int

在以下代码中,我无法理解为什么string会以这种方式转换为int

为什么它与0使用总和?

string mystring; 
vector<int> myint; 
mystring[i+1]=myint[i]+'0';

3 个答案:

答案 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]