Переместить это:
const char* testing = sNumber.c_str();
int num = atoi(testing);
cout << num;
Ниже последнего }
в коде, который вы вставили, т.е. вне цикла for. В настоящее время вы получаете отдельную распечатку для каждого символа в sLine
, потому что она выполняется на каждой итерации цикла. (Последний символ в sLine
может быть переводом строки, поэтому это может произойти, даже если вы думаете, что написали только одну цифру.)
Редактировать: также переместите объявление sNumber
выше цикла for.
Вы также можете изменить if (sLine[l] == '-')
на if (sLine[l] == '-' && (l + 1) < sLine.length())
, чтобы вы не могли получить доступ за концом строки, если тире является последним символом в строке.
Вы также можете переименовать переменную l
во что-то, что выглядит менее похоже на 1
. =)
Вы также можете переосмыслить, если это правильный способ сделать это вообще (обычно, если простая вещь усложняет, есть вероятность, что вы делаете это неправильно).