Problem z zapisem odczytem danych z pliku
Ostatnio zmodyfikowano 2013-05-17 17:52
zgm92 Temat założony przez niniejszego użytkownika |
Problem z zapisem odczytem danych z pliku » 2013-05-17 17:09:50 Zacznę od tego że wszystko się kompiluje i działa. Problem mój wygląda tak: 1. Włączam program (narazie brak bazy danych) 2. Dodaje 3 elementy do vectora 3. Sprawdzam wyświetla że są 3 4. Zamykam program z użyciem funkcji do zapisu która zapisuje dane do pliku 5. Włączam program jeszcze raz są juz 4 elementy ( skopiowany ostatni) 6. Zamykam x na gorze w okienku 7. Włączam nadal są 4 elementy 8. Zamykam z uzyciem funkcji 9. Włączam jest juz 5... nie wiem co mam źle i brakuje mi pomysłów chyba coś z znakiem końca pliku choć pewności nie mam. Oto kod tych dwóch funkcji: void zaladuj_ksiazki( vector < ksiazka > & w ) { fstream plik( "base.bs", ios::in | ios::binary ); string linia; streamsize dlugosc; char bufor[ 1024 ]; w.clear(); cout << w.size(); _getch(); if( plik.good() == true ) { while( !plik.eof() ) { plik >> dlugosc; plik.read( bufor, dlugosc ); linia = bufor; w.push_back( rozdziel_string_ksiazka( linia ) ); } plik.close(); } }
void zapisz_ksiazki( vector < ksiazka > & w ) { fstream plik( "base.bs", ios::out | ios::binary ); string wyraz; for( unsigned int i = 0; i < w.size(); i++ ) { wyraz = ' ' + w[ i ].id + '\t' + w[ i ].tytul + '\t' + w[ i ].autor + '\t' + w[ i ].isbn + '\t' + w[ i ].numer_regalu + '\t' + w[ i ].numer_polki + '\0'; plik << wyraz.size(); plik.write( wyraz.c_str(), wyraz.size() ); } plik.close(); } |
|
akwes |
» 2013-05-17 17:46:55 Co tu się naprawdę dzieje? while( !plik.eof() ) { plik >> dlugosc; plik.read( bufor, dlugosc ); linia = bufor; w.push_back( rozdziel_string_ksiazka( linia ) ); }
W miejscu gdzie są wykrzykniki warto by było sprawdzić, czy nie osiągnęliśmy końca pliku. Na szybko można to zrobić przez if( plik.eof() ) break; |
|
zgm92 Temat założony przez niniejszego użytkownika |
» 2013-05-17 17:52:34 No właśnie tego brakowało, nie zauważyłem teraz działa ładnie :) dzięki i zamykam |
|
« 1 » |