bartek483 Temat założony przez niniejszego użytkownika |
Pliki C++ » 2010-03-14 16:58:32 Witamm Nie potrafie zapisac obiektowo do pliku. Mam 3 klasy: Uzytkownik, Ksiazka i Biblioteka. Klasa Uzytkownik i Ksiazka wsadzam do klasy Biblioteka. Tworzy wektor: vector<Biblioteka>czytelnik Nastepnie: cin >> new_imie, new_nazw; Uzytkownik uzyt( new_imie, new_nazw, new_data_ur, new_wiek ); Biblioteka czyt( uzyt );
Probowalem zapisac to poleceniem: fprintf( plik, "%s\n", vector < Biblioteka > czytelnik );
Ale niestety nie tak to widocznie powinno wygladac, bo wywala mi blad MOglby ktos mi podpowiedziec jak zapisac ta informacje do pliku? bylbym wdzieczny ; ) |
|
pekfos |
» 2010-03-14 17:07:08 nie możesz zapisać do pliku wektora. zapisuj po kolei dane. I poco fprintfem. to z biblioteki C. używaj lepszego write z klasy fstream lub pisz strumieniowo. fstream plik; plik.open( "plik.txt", ios::out ); plik << cos << "*" << cos2 << "*" << cos3 << "*"; plik.close();
string c, c2, c3; plik.open( "plik.txt", ios::in ); getline( plik, c, '*' ); getline( plik, c2, '*' ); getline( plik, c3, '*' ); plik.close(); przeczytaj "Obsługa plików" w kursie zamieszczonym na tej stronie. |
|
bartek483 Temat założony przez niniejszego użytkownika |
» 2010-03-14 17:14:23 W ogole to chcialem zamieszczac czytelnikow w wektorze a w miedzy czasie zapisywac ich do pliku zeby pozniej mozna bylo wyszukac danego uzytkownika, i moje pytanie pytanie: czy ten plan jest do zrealizowania, czy mam za duze wymagania? ; ) |
|
pekfos |
» 2010-03-14 17:36:23 powiedz coś o zawartości tych klas, to pogadamy. inty inaczej się zapisuje od stringów. |
|
bartek483 Temat założony przez niniejszego użytkownika |
» 2010-03-14 17:44:16 To sa te klasy: class Ksiazki { private: char * tytul; char * autor; int egzemplarz; public: char * odczyt_tyt() const { return tytul; } char * odczyt_autor() const { return autor; } int odczyt_egz() const { return egzemplarz; } Ksiazki() : egzemplarz( 1 ) { tytul = new char[ 50 ]; autor = new char[ 50 ]; strcpy( tytul, "" ); strcpy( autor, "" ); } Ksiazki( const char * const tyt, const char * const aut, int egz ) : egzemplarz( egz ) { tytul = new char[ 50 ]; tytul = new char[ 50 ]; strcpy( tytul, tyt ); strcpy( autor, aut ); } Ksiazki( Ksiazki & kopia ); ~Ksiazki() { delete[] tytul; delete[] autor; } };
Ksiazki::Ksiazki( Ksiazki & kopia ) : egzemplarz( kopia.egzemplarz ) { tytul = new char[ 50 ]; autor = new char[ 50 ]; strcpy( tytul, kopia.tytul ); strcpy( autor, kopia.autor ); }
class Uzytkownik { private: char * imie; char * nazwisko; char * data_ur; int wiek; public: Uzytkownik( const char * const im, const char * const naz, const char * const data, int wi ) : wiek( wi ) { imie = new char[ 50 ]; nazwisko = new char[ 50 ]; data_ur = new char[ 10 ]; strcpy( imie, im ); strcpy( nazwisko, naz ); strcpy( data_ur, data ); } char * odczyt_imie() const { return imie; } char * odczyt_nazwisko() const { return nazwisko; } char * odczyt_data() const { return data_ur; } int odczyt_wiek() const { return wiek; } Uzytkownik( Uzytkownik & kopia ) : wiek( kopia.wiek ) { imie = new char[ 50 ]; nazwisko = new char[ 50 ]; data_ur = new char[ 10 ]; strcpy( imie, kopia.imie ); strcpy( nazwisko, kopia.nazwisko ); strcpy( data_ur, kopia.data_ur ); } ~Uzytkownik() { delete[] imie; delete[] nazwisko; delete[] data_ur; } };
class Biblioteka { private: Ksiazki ksiazka; Uzytkownik uzytkownik; public: Biblioteka( Uzytkownik uzyt ) : uzytkownik( uzyt ) { } int przedluz_wyp(); void wypozycz(); int szukaj(); int oddaj(); void rezerwuj(); void rejestracja(); void odrejestruj(); void zaleg_ksiaz(); void utworz_plik(); bool odczyt(); };
|
|
Elaine |
» 2010-03-14 17:58:46 I poco fprintfem. to z biblioteki C. |
Jakiej biblioteki C? <cstdio> to czysto C++owy odpowiednik <stdio.h> z biblioteki standardowej C (dotyczy to każdej innej pary standardowych nagłówków <cxxx> i <xxx.h>). używaj lepszego write z klasy fstream lub pisz strumieniowo. |
W czym jest lepsze (znaczy, faktycznie jedna taka rzecz jest, ale to nie jest nic, czego nie można zrobić pisząc mały wraper na funkcje I/O z <cstdio>)? Poza tym, że jest wolniejsze, znacznie większe, dłużej się kompiluje, wywala mniej czytelne komunikaty błędów itp. itd.? |
|
bartek483 Temat założony przez niniejszego użytkownika |
» 2010-03-14 18:35:13 Np. moge uzyc metody rejestracja tak? : void rejetracja() { char new_imie[ 50 ]; char new_nazw[ 50 ]; char new_data_ur[ 10 ]; int new_wiek; cout << "Podaj imie: "; cin >> new_imie; cout << "Podaj nazwisko: "; cin >> new_nazw; cout << "Podaj date urodzenia: "; cin >> new_data_ur; cout << "Podaj wiek: "; cin >> new_wiek; Uzytkownik uzyt( new_imie, new_nazw, new_data_ur, new_wiek ); Biblioteka czyt( uzyt ); } // By malan: Jeżeli nic lepszego nie uda Ci się napisać, to możesz :). Temat uważam, za zamknięty. |
|
« 1 » |