Несколько баллов. Прежде всего, если вам нужно только сохранить значения от 0 до 9, вы можете также сохранить их в символе (который представляет собой небольшой целочисленный тип в C ++).
Во-вторых, вам, вероятно, нужно добавить break;
в конец всех case
s в вашем операторе switch
- в C ++ выполнение падает от одного случая к другому без break
для прекрати это Опять же, вам, вероятно, следует просто полностью избавиться от оператора switch
. Возможно, вам лучше использовать isdigit
из <ctype.h>
. Так как char
- это маленький целочисленный тип в C ++, вы также можете выполнять математические операции над ним, поэтому вы можете просто вычесть '0'
из каждой цифры, убедившись, что это цифра. Редактировать: вопреки последующему редактированию, я бы настоятельно рекомендовал не вычитать 48
из каждой цифры. Прежде всего, он не гарантированно работает (и не будет работать с некоторыми наборами символов - даже если вы не думаете, что ваш код когда-либо будет использоваться на мэйнфрейме IBM, это плохая привычка). Во-вторых, это делает намерение намного более очевидным. Я не думаю, что есть веская причина ожидать от читателя запоминания таблицы ASCII, чтобы они знали, что 48 эквивалентно '0'
.
Наконец, чтобы справиться с проблемой, о которой вы знали, вы, вероятно, захотите поискать std::vector
.