Конец файла и while-loop

У меня есть фрагмент кода c ++, который должен читать некоторую информацию из файла и не найти файл или информацию, прочитать его с экрана. Вот код:

char c;
bool found=false;
int N;
double step;
ifstream in;
in.open(name.c_str());
if(in) {
    while(!found && in >> c) {
        while(c!='=') in >> c;
        in >> N;
        if(N==wp.N) {
            found=true;
            while(c!=':') in >> c;
            in >> step;
        }
        c='a';
    }
}
if(!found) {
    cout << "max=";
    cin >> step;
}

Вышеупомянутое построено в соответствии со структурой данных в файле, и все работает, когда информация находится в файле (т. Е. N = wp.N в какой-то момент), или файл не существует (т.е. , если (in) неверно).

But the problem arises when the file exist but doesn't contain the info, that is N==wp.N is never true. Then the program freezes (presumably at the end of the file, so that found is never true). I was expecting that including in >> c inside the while-loop would fix this, but I've also tried using in.eof().

Какие-либо предложения?

0
nl ja de

2 ответы

The problem is in your second loop, which will loop infinitely if you reach end of file without reading a '='. You need the in >> c in the condition there as well.

1
добавлено

You may find eof() after any of your in >>.

Поэтому я предполагаю, что вы зацикливаетесь (c! = ':') Или while (c! = '=')

1
добавлено
Спасибо вам обоим! Мне жаль, что я не смогу правильно ответить на оба ответа, так или иначе, я пойду быстрее. ура
добавлено автор jorgen, источник
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest