Неправильное преобразование int в строку в C ++ - PullRequest
0 голосов
/ 19 марта 2012

Я пытаюсь реализовать следующую логику в C ++. Здесь x и y - две переменные типа integer. xs и ys - это 2 переменные типа string. Я хочу преобразовать целое число в строку, а затем продолжить с логикой.

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 Ответ

4 голосов
/ 19 марта 2012

Что вы, вероятно, хотите, чтобы добавить цифры каждого номера. То, что вы делаете сейчас, это добавление значения 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 является символом и может быть преобразован в целое число, то в итоге вы получите просто int, который содержит значение ASCII этого символа.

...