Jak odczytac dane z pliku binarnego?

0

Witam!
chcialbym odczytac dane z pliku binarnego w ktorym dodalem dane o takiej klasie:

class baza {
public:
        int id;
        string imie;
        string nazwisko;
        int dzien, mies, rok;

        int id2;
        string marka;
        string rejestracja;
        string model;

jak to zrobic?

0

A jak te dane dodałeś? Jak wygląda plik?

0

Przedstaw sposób zapisu danych z tej klasy do pliku binarnego.

Jeśli umiesz użyć metody write() to będziesz umiał pobrać dane metodą read().
Natomiast pobieranie stringa z pliku binarnego można użyć std::getline() z terminatorerm \0.

0
void baza:: dodaj() {
    baza osoba;
    fstream plik("wlasciciel.dat", ios::binary | ios::out);
    cout << "Podaj imie: " << endl;
    getline(cin,osoba.imie);
    cout << "Podaj nazwisko: " << endl;
    getline(cin, osoba.nazwisko);
    cout << "Podaj date urodzenia: " << endl;
    cout << "Dzien: ";
    cin >> osoba.dzien;
    cout << "Miesiac: ";
    cin >> osoba.mies;
    cout << "Rok: ";
    cin >> osoba.rok;
    plik.write(reinterpret_cast<char*>(&osoba), sizeof(osoba));
    plik.close();
    baza pojazd;
    fstream plik2("pojazdy.dat", ios::binary | ios::out);
    cout << "Podaj marke: " << endl;
    getline(cin, pojazd.marka);
    cout << "Podaj model: " << endl;
    getline(cin, pojazd.model);
    cout << "Podaj numer rejestracyjny: " << endl;
    getline(cin, pojazd.rejestracja);
    plik2.write(reinterpret_cast<char*>(&pojazd), sizeof(pojazd));
    plik2.close();
    }

tak przebiega dodawanie do pliku, wlasciwie do 2och plikow

0
plik.write(reinterpret_cast<char*>(&osoba), sizeof(osoba)); 

W ten sposób zapisujesz cały obiekt do pliku, ale zauważ że obiekty std::string zapisywane są jako wskaźnik na pierwszy element,
więc nie da rady odczytać niczego sensownego z powrotem.
Zapis binarny

Musisz wszystkie składowe klasy zapisać osobno do pliku i w odpowiedniej kolejności odczytać te dane z pliku.
Możesz też skorzystać z boost serialization

Jeszcze jedno, poza tematem: metoda dodaj() wykonuje za dużo odpowiedzialności.
Odczytem i zapisem obiektów do pliku powinna zajmować się osobna klasa.

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