У меня есть функция, которая должна читать символ файла char и выводить на консоль, пока не достигнет EOF. Функция отлично работает, отображая все нужные мне символы, но затем она просто продолжает двигаться и никогда не останавливается в конце.Ошибка функции с EOF
Ниже функция
void displayAllLines(ifstream &joke)
{
char ch;
joke.clear();
ch = joke.get();
while (ch != EOF)
{
cout << ch;
ch = joke.get();
}
}
Содержимое файла перечислены ниже
"(пустая строка) Q: Что язык сказать зубы?"
Как я уже говорил, он отображает линию просто отлично, но цикл продолжает идти после вопросительного знака.
Любые мысли о том, почему это может быть? Кроме того, больше информации, необходимой для правильного ответа на мой вопрос?
Это просто привычка, которую я учил, когда начинал с файла. Просто убедитесь, что на нем нет флажков в начале. Считаете ли вы, что это бессмысленно, или вы думаете, что это может быть вредно для программы? EDIT :: Что касается кода, который вы отправили, он, безусловно, продвигает программу дальше, но не учитывает пробельные символы и отображает все без пробелов. – Podo
Также интересно, если у вас есть мысли, почему мой код * не делает * Работа. – Podo
Ii не думайте, что вы должны вслепую называть 'clear()' '. Если установлены флаги, то это будет по какой-то причине, и просто очистка их не поможет. Ваш код не работает, потому что потоки C++ не читают EOF как символ, как C. Потоки C++ читают символы, пока они не попадут в EOF. (Они никогда не возвращают символ EOF - это вещь C.) – Phil