c++. Выводит сумму на 144 больше, чем нужно

Встретился с проблемой, что при суммировании 3 цифр из строки, сумма получается на 144 больше, чем она должна быть на самом деле. (без "(int)" так-же выводит на 144 больше, чем нужно).

код:

#include <iostream>
#include <string>

using namespace std;

int main() {

    string bilet;
    int sum1, sum2;

    cin >> bilet;

    sum1 = (int) bilet[0] + (int) bilet[1] + (int) bilet[2];
    sum2 = (int)bilet[3] + (int)bilet[4] + (int)bilet[5];

    cout << sum1 << " " << sum2;

    return 0;
}

Ввод: 123123

Вывод: 150 150


Ответы (1 шт):

Автор решения: MBo

(int) bilet[0] - это не перевод символа-цифры в число, а получение ASCII-кода символа - например, для "1" это будет 49 (0x31)

Вы можете отнять от полученного значения код нуля 0x30 (или от результата 144=48*3), но в общем случае стоит использовать функции преобразования (atoi и т.д.)

→ Ссылка