Проблема в том, что вы сохраняете итератор до последнего символа в строке и используете его только после того, как вы (потенциально) удалили символы из строки, поэтому сохраненный итератор теперь недопустим (не указывая ни на какой последний символ). больше).
Это поможет объявить переменные как можно ближе к их первому использованию. В частности, итераторы, как правило, становятся недействительными настолько легко, что вам вообще следует избегать их удержания дольше, чем необходимо.
Итак, инициализируйте конечный итератор после удаления начальных пробелов. (Можно также рассмотреть вопрос об удалении завершающих пробелов.)
Могу ли я также предложить использовать функцию-член erase
для удаления символов из строки.
Могут быть и другие ошибки при удалении конечных пробелов, но вы можете это выяснить, когда попадете туда.