Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pliki C++

Ostatnio zmodyfikowano 2010-03-14 18:35
Autor Wiadomość
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:
C/C++
cin >> new_imie, new_nazw;
Uzytkownik uzyt( new_imie, new_nazw, new_data_ur, new_wiek );
Biblioteka czyt( uzyt );
Probowalem zapisac to poleceniem:
C/C++
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 ; )
P-15026
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.
C/C++
fstream plik;
plik.open( "plik.txt", ios::out );
plik << cos << "*" << cos2 << "*" << cos3 << "*";
plik.close();
//a wczytujesz tak:
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.
P-15027
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? ; )
P-15028
pekfos
» 2010-03-14 17:36:23
powiedz coś o zawartości tych klas, to pogadamy. inty inaczej się zapisuje od stringów.
P-15031
bartek483
Temat założony przez niniejszego użytkownika
» 2010-03-14 17:44:16
To sa te klasy:

C/C++
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 uzytk, Ksiazki ksiaz):
    //                 uzytkownik(uzytk), ksiazka(ksiaz) {}
    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();
    //~Biblioteka();
};

P-15032
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.?
P-15036
bartek483
Temat założony przez niniejszego użytkownika
» 2010-03-14 18:35:13
Np. moge uzyc metody rejestracja tak? :

C/C++
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 );
   
    // FRAGMENT Z ZAPISYWANIEM DO PLIKU.
}

//By malan: Jeżeli nic lepszego nie uda Ci się napisać, to możesz :).
Temat uważam, za zamknięty.
P-15037
« 1 »
  Strona 1 z 1