operator int()函数将字符串转换为int
class mystring
{
private:
chat str[20];
public:
operator int() // i'm assuming this converts a string to an int
{
int i=0,l,ss=0,k=1;
l = strlen(str)-1;
while(l>=0)
{
ss=ss+(str[l]-48)*k;
l--;
k*=10;
}
return(ss);
}
}
int main()
{
mystring s2("123");
int i=int(s2);
cout << endl << "i= "<<i;
}
那么operator int()
背后的逻辑是什么?那里的48是什么?有人可以向我解释从字符串到int的转换背后的算法。
答案 0 :(得分:3)
是的,这会将字符串转换为整数。 48是'0'的ASCII值。如果从ASCII数字中减去48,您将得到数字的值(例如:'0' - 48 = 0,'1' - 48 = 1,..)。对于每个数字,您的代码使用k
计算正确的幂10(范围介于1 ... 10 ^ {输入字符串表示的数字的对数})。
答案 1 :(得分:1)
确实将字符串转换为整数。该例程假设所有字符都是十进制数字(如减号,空格或逗号之类的东西会搞乱它)。
它从那些地方开始并在字符串中移动。对于每个数字,它会减去'0'
的ASCII值,并乘以当前的位置值。
答案 2 :(得分:0)
这确实将字符串转换为整数。如果你看一个ascii表,数字从值48开始。使用这个逻辑(并说出字符串“123”)while循环将执行:
l=2
ss=0+(51-48)*1
所以在这种情况下ss = 3
我们得到的下一个循环
l=1
ss=3+(50-48)*10
所以ss = 23
下一个循环
l=0
ss=23+(49-48)*100
所以ss = 123
循环中断,我们返回一个值为123的整数。
希望这有帮助!