iostream — C ++ удаляет неалфавитные символы из начала слова

У меня есть следующий код в методе строкового типа, который читает слова из файла, удаляет все неалфавитные символы (как показано ниже) из начала слова и возвращает их после этого. После распечатки результатов в основном методе, я заметил, что, хотя он должен удалить все не алфавитные символы с самого начала, он все равно выдает 1, например:
Список содержит слова:

Там, когда-то был милый, маленький кролик, и его застрелили, конец истории

После применения функции на выходе было:

Там-как только был милый, маленький кролик, и его застрелили, конец истории

inFile >> word;
for(int i=0; i<word.size(); i++){
if(word[i] >= 'A' && word[i] <= 'Z' || word[i] >= 'a' && word[i] <= 'z')  break;
else word.erase(i,1);
}
return word;

Я был бы признателен, если бы кто-то мог сказать мне, что, черт возьми, я не вижу. Я пробовал все разные функции, например Стереть (), исальфа () и т. д. Все они дают один и тот же результат, когда не должны. Что я делаю, чтобы запретить удаление последнего не алфавитного символа (в начале слова)?
Я попытался сделать то же самое, чтобы удалить все знаки препинания в конце слова, но он удалил все, кроме одного (снова).

Спасибо за ваше время

1

Решение

Ваш цикл пропускает символы, так как вы удаляете элемент и продолжаете. Если вы удалите, вы должны уменьшить i потому что следующая буква находится в той же позиции после стирания. Или вы должны иметь цикл while для каждой позиции, стирая эту позицию, пока она не станет альфа или концом, но уменьшится i проще и менее подвержен ошибкам.

Выполнение кода в отладчике немедленно показало бы эту проблему в логике.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]