在C ++中将int转换为字符串不正确

时间:2012-03-18 20:06:42

标签: c++ data-structures type-conversion

我试图在C ++中实现以下逻辑。这里x和y是2个整数类型的变量。 xs和ys是string类型的2个变量。我希望将整数转换为字符串,然后继续逻辑。

def isGoodPoint(x,y):
    xs=str(abs(x))
    ys=str(abs(y))
    xsum=0
    ysum=0
    for c in xs:
        xsum=xsum+int(c)
    for c in ys:
        ysum=ysum+int(c)
    if xsum+ysum <=19:
        return True

我的C ++源代码:

转换无法正常工作,我在xs和ys中得到的值不正确。例如:如果我的函数调用是:isGoodPoint(0,0),那么在调试模式下,xs和ys中的值类似于45和50或一些奇怪的值。实际上xs和ys的值应为0。

我错过了什么吗?

1 个答案:

答案 0 :(得分:4)

您可能想要的是添加每个数字的数字。你现在正在做的是添加每个数字的ASCII值。如果要添加数字,则必须减去第一个数字的ASCII值:

for each (char c in xs)
    xsum = xsum + (c - '0');

for each (char c in ys)
    ysum = ysum + (c - '0');   

应该这样做。在您的代码中,此表达式为:

 xsum = xsum + int(c);

创建一个int,其值为c。由于c是一个char并且可以转换为int,因此您最终得到的只是int,其中包含该字符的ASCII值。