Wczytywanie liczb z pliku
Ostatnio zmodyfikowano 2012-06-27 09:47
Unlimited Temat założony przez niniejszego użytkownika |
Wczytywanie liczb z pliku » 2012-06-26 22:41:19 Witam. Mam problem z wczytaniem liczb z pliku. Mój fragment kodu: while( !plik.eof() ) { getline( plik, tablica[ n ].tytul ); getline( plik, tablica[ n ].autor ); getline( plik, tablica[ n ].wydawnictwo ); plik >> tablica[ n ].rok; plik >> tablica[ n ].strony; } Przykładowe dane w pliku na np 2 tablice: a b c 1 2 d e f 3 4 I teraz co działa a co nie. Gdy wezmę plik >> tablica[n].rok; i plik >> tablica[n].strony; w komentarz to wtedy ładnie sobie działa ale jak te linijki dołączę do programu to przy wczytywaniu program kończy działanie. Podejrzewam że te linijki nie wiedzą gdzie jest aktualnie wskaźnik w pliku i jadą na początek i napotykają literę zamiast cyfry. Jak to naprawić? |
|
DejaVu |
» 2012-06-26 23:38:36 Sprawdź czy to zadziała:
plik >> tablica[ n ].rok >> std::endl; plik >> tablica[ n ].strony >> std::endl;
|
|
Unlimited Temat założony przez niniejszego użytkownika |
» 2012-06-26 23:52:29 Nie kompiluje się wtedy: C:\Users\AcerAS-7552G\Desktop\program_for_windows.cpp|421|error: no match for 'operator>>' in '((std::fstream*)plik)->std::basic_fstream<char, std::char_traits<char> >::<anonymous>.std::basic_iostream<char, std::char_traits<char> >::<anonymous>.std::basic_istream<_CharT, _Traits>::operator>> [with _CharT = char, _Traits = std::char_traits<char>](((int&)(&(tablica + ((unsigned int)(((unsigned int)n) * 20u)))->ksiazki::strony))) >> std::endl'| |
|
DejaVu |
» 2012-06-27 00:14:40 Rozumiem. W każdym razie chodzi o to, że za liczbami znajduje się znak nowej linii. W przypadku gdy wczytujesz liczbę to znak nowej linii pozostanie niewczytany. Wówczas przy kolejnym obiegu pętli wczytujesz pustą linię, a w konsekwencji wszystko się sypie. Po wczytaniu ostatniej liczby (w pętli) dopisz:
std::string smietniczka; getline( plik, smietniczka );
Powinno zadziałać. |
|
Unlimited Temat założony przez niniejszego użytkownika |
» 2012-06-27 09:47:30 Działa cudownie teraz. O to chodziło. Dzięki wielkie |
|
« 1 » |