Dalsze wczytywanie z pliku w przypadku braku wartości do pobrania

0

Kiedy w pętli następuje wczytywanie wartości oraz w pliku nie pojawi się wartość do wczytania, to w przypadku braku warunku, w którym występuje break lub continue wypisywane są nieustannie ostatnie poprawnie wczytane wartości. W przypadku kiedy jest continue pętla nie jest przerywana, ale nie wypisuje też wartości, natomiast kiedy jest break to pętla się kończy na ostatnio dobrze pobranej parze wartości. Tutaj moje pytanie, jak spowodować dalsze wczytywanie z pliku, kiedy nie ma wartości do odczytania. Oraz jak zrobić aby jednak wczytał (tutaj dla przykładu) wartość LZQYDB, lecz pominął klucz.

ZABLOCKI 1144
RKTDYA 9584
LZQYDB
LEAYD 8264

  • bez continue lub break wypisuje non stop LZQYDB 9584
  • z continue wypisuje RKTDYA 9584 oraz się nie kończy
  • z break wypisuje RKTDYA 9584 oraz się kończy
while (!file.eof())
{
	if (file >> word >> key)
		std::cout << word << ' ' << key << '\n';
	else
		// co tutaj powinno być
}
1
// co tutaj powinno być 
plik.clear(); 
while (!file.eof())
{
    if (file >> word >> key)
    {
        std::cout << word << ' ' << key << '\n';
    }
    else
    {
        std::cout << word << "unknown value\n";
        file.clear();
    }
} 

To rozwiązanie jest dopasowane do tej konkretnej sytuacji.
Z file.eof() też jest związana pułapka. Jeśli ostatnia linia w pliku będzie zakończona znakiem nowego wiersza,
pętla wykona się jeszcze raz.

0

Zadziałało, dziękuje za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1