Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

snimanje strukture, ili instance klase u datoteku

[es] :: C/C++ programiranje :: snimanje strukture, ili instance klase u datoteku

[ Pregleda: 3271 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

damnja
Ivan Damnjanovic
nis

Član broj: 125283
Poruke: 8
*.adsl.verat.net.



Profil

icon snimanje strukture, ili instance klase u datoteku11.07.2008. u 01:03 - pre 191 meseci
Kako da snimim instancu neke klase u datoteku, i kasnije da je ponovo ucitam u klasu.
probao sam sa jednostavnijim primerom, snimanje strukture, ali se javlja problem.
evo primer koda

#include <fstream.h>
#include <string.h>

struct Radnik
{
char ime[30];
double plata;
};

void main()
{
Radnik r;
strcpy(r.ime, "Josip Broz");
r.plata = 103.45;

ofstream os("plata.dat", ios::binary );
os.write((char *)( &r), sizeof(Radnik));
os.close();

Radnik p;
ifstream is( "plata.dat", ios::binary | ios::nocreate );
is.read( (char *) &r, sizeof(Radnik) );
cout << p.ime << ' ' << p.plata << endl;
is.close();
}

ime lepo odstampa, ali za platu stampa -9.25596e+061
Zasto se ovde javlja greska, kako da je ispravim, i dali mogu da se snimaju klase kao i strukture?!
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
*.dialup.neobee.net.



+9 Profil

icon Re: snimanje strukture, ili instance klase u datoteku11.07.2008. u 02:40 - pre 191 meseci
Možda igrom slučaja dobro štampa ime...
jer u poslednjem is.read kao argument treba da bude &p, a ne &r. Posle toga bi trebalo da radi.

Ne znam da li ti je ovo primer iz neke knjige ili si ti pisao...ali je generalno loše napisan.
main f-ja po Standardu vraća int, fstream.h je depricated (podseća na vreme TurboCPP-a).

Možeš i klase i strukture...(u C++-u, struktura == klasa u kojoj su polja po defaultu public, a ne private).
 
Odgovor na temu

tosa
上海, 中国

Član broj: 1811
Poruke: 1342
58.32.235.*

ICQ: 14293955
Sajt: https://github.com/milost..


+48 Profil

icon Re: snimanje strukture, ili instance klase u datoteku11.07.2008. u 06:24 - pre 191 meseci
Problem koji si opisao je u stvari serijalizacija objekata i ne postoji neko standardno rešenje za to.
Možeš i sam da razviješ sistem a možeš i da pogledaš neko od gotovih rešenja kao što je boost::serialization
da bi dobio ideju kako to radi.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: snimanje strukture, ili instance klase u datoteku11.07.2008. u 06:46 - pre 191 meseci
O serijalizaciji je bilo par puta reci na ES-u:
http://www.elitesecurity.org/t168890
 
Odgovor na temu

damnja
Ivan Damnjanovic
nis

Član broj: 125283
Poruke: 8
*.adsl.verat.net.



Profil

icon Re: snimanje strukture, ili instance klase u datoteku11.07.2008. u 15:48 - pre 191 meseci
Da, Gorane, sto se tice prigovora, da u poslednjem is.read treba da stoji &p, tako sam i radio, samo sam ovde u kucanju pogresio.
Znaci, opet vraca pogresnu vrednost, i to je ono sto mene muci.
Sto se tice serilizacije, nisam upoznat sa time, ali cu da potrazim. Hvala na savetu.
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
*.adsl.verat.net.



+9 Profil

icon Re: snimanje strukture, ili instance klase u datoteku11.07.2008. u 19:54 - pre 191 meseci
@damnja
Kao što ti Toša reče, najpre recimo vidi boost... a usput čitaj o serijalizaciji, jer razvijanje nekog svog sistema može da bude proizvoljno komplikovano u zavisnosti od potreba (tipa ako rešiš da razvijaš neki svoj interfejs...pa naiđeš i na neke probleme sa nasleđivanjem tog svog interfejsa.. zbog samog layouta kod MI)... Naravno, uopšte ne mora da bude komplikovano za neke specifične potrebe...
 
Odgovor na temu

[es] :: C/C++ programiranje :: snimanje strukture, ili instance klase u datoteku

[ Pregleda: 3271 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.