Как я уже говорил ... вы читаете один символ, а затем выходите из цикла ... не break
.
Что касается того, как это сделать ... одним из подходов было бы определение 3 счетчиков: int fiveMinusLetterWord
, int sixPlusLetterWord
и int singleLetterWord
. Количество символов до letter == ' '
. Когда вы нажмете пробел, посмотрите, сколько символов вы прочитали - это длина предыдущего слова. При необходимости увеличьте один из ваших счетчиков, сбросьте счетчик символов и продолжайте до конца файла. Не забудьте проверить длину последнего слова после выхода из циклов. Вам также придется иметь дело с разделителями конца строки, поскольку вы читаете по одному символу за раз.
Более простой подход, поскольку это C ++: использовать istream& getline ( istream& is, string& str );
из <string>
и читать строку за строкой в std::string
, а затем использовать функции std::string
для поиска ваших слов.
РЕДАКТИРОВАТЬ: Я пропустил часть в вашем вопросе, которая говорит "читать по одному слову за раз". Посмотрите на другой ответ, вы можете прочитать одно слово из потока, используя std :: string.