Вот такой кусок кода:
fstream Results;
Results.open(path2, fstream::in | fstream::out | fstream::app);
if (!Results.is_open())
{
cout << "Ошибка открытия файла" << n;
}
else
{
int newM;
char rE;
int gresult = rarr[0] + rarr[1] + rarr[2];
while (!Results.eof())
{
Results >> newM;
if (newM == gresult)
{
Results >> rE;
cout << rE << n;
break;
}
}
}
Results.close();
Массив и путь, говорю сразу, правильные.
Однако написанное в файле не выводится, но и не выдаёт ошибки.
Проверка с помощью отладчика показала, что не выходит из цикла while.
Пожалуйста , объясните почему.введите сюда код
В данном вопросе why is while feof file always wrong написано, что цикл вида:
while( !file.eof() )
почти всегда неверно. Вам следует поменять условие цикла на:
while ( Results >> newM ) {
....
}
Это не ошибка, но не имеет смысла создавать файловый поток без параметров и следующей же строкой открывать его, эти параметры можно просто передать в конструктор:
fstream Results(path2, fstream::in | fstream::out | fstream::app);
Скорее всего у вас не int в файле.
Ошибка чтения при неверном условии завершения приводит к тому, что вы пытаетесь читать какую-то ерунду - не целое число - вечно...
while (!Results.eof())
{
Results >> newM;
...
}
Получается так:
Была попытка чтения за концом файла? Нет? Тогда читаем int. Не удалось? Остаемся на том же месте, выставляем состояние файла fail.
Идем к условию цикла. Была попытка чтения за концом файла? Нет? Тогда читаем int? нет, файл в состоянии fail.
Так что идем к условию цикла. Была попытка чтения за концом файла? Нет? Тогда читаем int? нет, файл в состоянии fail.
Так что идем к условию цикла. Была попытка чтения за концом файла? Нет? Тогда читаем int? нет, файл в состоянии fail. Так что идем...
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости