Zapisywanie binarne na zapisywanie strumieniem
Ostatnio zmodyfikowano 2014-06-19 10:31
Byron Temat założony przez niniejszego użytkownika |
Zapisywanie binarne na zapisywanie strumieniem » 2014-06-14 00:06:34 Witam, dostałem kod lecz mam problem ze wspomnianymw temacie zapisywaniem. W pliku jest zapisywanie binarne do plików .dat a potrzebuję zapisywania strumieniem do plików .txt. Niestety, sam tego nie potrafię zrobić. #include <cstdlib> #include <iostream> #include <fstream> #include <cstring> using namespace std;
class Film { private: int identyfikator_filmu; char gatunek[ 10 ]; public: Film() { } Film( int id, char * gatunek ) { identyfikator_filmu = id; strcpy( this->gatunek, gatunek ); } void wypisz_film() { cout << "ID: " << identyfikator_filmu << ", Gatuenk filmu: " << gatunek; } int daj_id() { return identyfikator_filmu; } int porownaj_typ( char * gatunek ) { if( strcmp( this->gatunek, gatunek ) ) { return 1; } else { return 0; } } };
class Klient { private: int identyfikator_klienta; char nazwisko[ 50 ]; char imie[ 50 ]; int wiek; public: Klient() { } Klient( int id_kl, int wiek_klienta, char * nazwisko, char * imie ) { identyfikator_klienta = id_kl; wiek = wiek_klienta; strcpy( this->nazwisko, nazwisko ); strcpy( this->imie, imie ); } void wypisz_klienta() { cout << "ID: " << identyfikator_klienta << ", Nazwisko: " << nazwisko << ", Imie: " << imie << ", " << wiek << " lat"; } int daj_id_kl() { return identyfikator_klienta; } int daj_wiek_kl() { return wiek; } };
class Wypozyczenie { private: int id_wypozyczenie, id_filmu; public: Wypozyczenie() { } Wypozyczenie( int id_wypozyczenie, int id_filmu ) { this->id_wypozyczenie = id_wypozyczenie; this->id_filmu = id_filmu; } void wypisz_wypozyczenie() { cout << "ID klienta: " << id_wypozyczenie << ", ID filmu: " << id_filmu; } int daj_id_wypoz() { return id_wypozyczenie; } int daj_id_fl() { return id_filmu; } };
int main() { int wybor_zadania; int f, klient, wypozycenie_filmu; int id_filmu; char gat_filmu[ 10 ]; int id_klienta, wiek; char nazwisko[ 50 ]; char imie[ 50 ]; int liczba_filmow, liczba_klientow, liczba_wypozyczen; char koniec = 'n'; Film * fl; fl = new Film[ 100 ]; Klient * kl; kl = new Klient[ 100 ]; Wypozyczenie * wypozycz; wypozycz = new Wypozyczenie[ 100 ]; ifstream zplikFilm( "film.dat", ios_base::binary ); if( zplikFilm.is_open() ) { liczba_filmow = 0; while( zplikFilm.read(( char * ) & fl[ liczba_filmow ], sizeof( fl[ liczba_filmow ] ) ) ) { liczba_filmow++; } } zplikFilm.close(); ifstream zplikKlient( "klient.dat", ios_base::binary ); if( zplikKlient.is_open() ) { liczba_klientow = 0; while( zplikKlient.read(( char * ) & kl[ liczba_klientow ], sizeof( kl[ liczba_klientow ] ) ) ) { liczba_klientow++; } } zplikKlient.close(); ifstream zplikWypozyczenie( "wypozyczenie.dat", ios_base::binary ); if( zplikWypozyczenie.is_open() ) { liczba_wypozyczen = 0; while( zplikWypozyczenie.read(( char * ) & wypozycz[ liczba_wypozyczen ], sizeof( wypozycz[ liczba_wypozyczen ] ) ) ) { liczba_wypozyczen++; } } zplikWypozyczenie.close(); do { cout << "1.Dodaj nowy film" << endl; cout << "2.Dodaj nowego klienta" << endl; cout << "3.Wypozycz film klientowi" << endl; cout << "4.Wypisz wszystkie filmy wedlug gatunkow" << endl; cout << "5.Wypisz wszystkich klientow" << endl; cout << "6.Wypisz wszystkie wypozyczenia" << endl; cout << "7.Znajdz najpopularniejszy gatunek filmu w danym przedziale wiekowym" << endl; cout << "8.Wyjdz z programu" << endl; cin >> wybor_zadania; system( "cls" ); switch( wybor_zadania ) { case 1: { cout << "Wybrales opcje dodania nowego filmu.\nIle filmow chcesz dodac?" << endl; cin >> f; for( int i = 0; i < f; i++ ) { cout << "Podaj identyfikator filmu: "; cin >> id_filmu; cout << "Podaj gatunek filmu: "; cin >> gat_filmu; cout << endl; Film tmpp( id_filmu, gat_filmu ); fl[ i ] = tmpp; } for( int i = 0; i < f; i++ ) { fl[ i ].wypisz_film(); } getchar(); getchar(); ofstream doplikFilm( "film.dat", ios_base::app | ios_base::binary ); for( int i = 0; i < f; i++ ) { doplikFilm.write(( char * ) & fl[ i ], sizeof fl[ i ] ); } doplikFilm.close(); ifstream zplikFilm( "film.dat", ios_base::binary ); if( zplikFilm.is_open() ) { liczba_filmow = 0; while( zplikFilm.read(( char * ) & fl[ liczba_filmow ], sizeof( fl[ liczba_filmow ] ) ) ) { liczba_filmow++; } } zplikFilm.close(); break; } case 2: { cout << "Wybrales opcje dodania klienta.\nIle klientow chcesz dodac?" << endl; cin >> klient; for( int i = 0; i < klient; i++ ) { cout << "Podaj identyfikator klienta: "; cin >> id_klienta; cout << "Podaj imie kilenta: "; cin >> imie; cout << "Podaj nazwisko klienta: "; cin >> nazwisko; cout << "Podaj wiek klienta: "; cin >> wiek; cout << endl; Klient tmpw( id_klienta, wiek, nazwisko, imie ); kl[ i ] = tmpw; } for( int i = 0; i < klient; i++ ) { kl[ i ].wypisz_klienta(); } getchar(); getchar(); ofstream doplikuKlient( "klient.dat", ios_base::app | ios_base::binary ); for( int i = 0; i < klient; i++ ) { doplikuKlient.write(( char * ) & kl[ i ], sizeof kl[ liczba_klientow ] ); } doplikuKlient.close(); ifstream zplikKlient( "klient.dat", ios_base::binary ); if( zplikKlient.is_open() ) { liczba_klientow = 0; while( zplikKlient.read(( char * ) & kl[ liczba_klientow ], sizeof( kl[ liczba_klientow ] ) ) ) { liczba_klientow++; } } zplikKlient.close(); break; } case 3: { cout << "Wybrales opcje dodania wypozyczenia.\nIle wypozyczen chcesz pokazac? " << endl; cin >> wypozycenie_filmu; for( int i = 0; i < wypozycenie_filmu; i++ ) { cout << "Podaj ID klienta: "; cin >> id_klienta; cout << "Podaj ID filmu: "; cin >> id_filmu; cout << endl; Wypozyczenie tmpwp( id_klienta, id_filmu ); wypozycz[ i ] = tmpwp; } for( int i = 0; i < wypozycenie_filmu; i++ ) { wypozycz[ i ].wypisz_wypozyczenie(); } getchar(); getchar(); ofstream doplikWypozyczenie( "wypozyczenie.dat", ios_base::app | ios_base::binary ); for( int i = 0; i < wypozycenie_filmu; i++ ) { doplikWypozyczenie.write(( char * ) & wypozycz[ i ], sizeof kl[ i ] ); } doplikWypozyczenie.close(); ifstream zplikWypozyczenie( "wypozyczenie.dat", ios_base::binary ); if( zplikWypozyczenie.is_open() ) { liczba_wypozyczen = 0; while( zplikWypozyczenie.read(( char * ) & wypozycz[ liczba_wypozyczen ], sizeof( wypozycz[ liczba_wypozyczen ] ) ) ) { liczba_wypozyczen++; } } zplikWypozyczenie.close(); break; } case 4: { for( int i = 0; i < liczba_filmow; i++ ) { fl[ i ].wypisz_film(); cout << endl; } getchar(); getchar(); break; } case 5: { for( int i = 0; i < liczba_klientow; i++ ) { kl[ i ].wypisz_klienta(); cout << endl; } getchar(); getchar(); break; } case 6: { for( int i = 0; i < liczba_wypozyczen; i++ ) { wypozycz[ i ].wypisz_wypozyczenie(); cout << endl; } getchar(); getchar(); break; } case 7: cout << "Funkcja na razie nie dostepna.\n"; break; case 8: { koniec = 't'; break; } default: cout << "Bledne polecenie."; break; } system( "cls" ); } while( koniec != 't' ); return 0; } Z góry dziekuję za pomoc. |
|
pekfos |
» 2014-06-19 10:31:36 Dopisz do klas metody, przyjmujące referencję na strumień i zapisujące do niego składowe klasy. |
|
« 1 » |