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