Zapisywanie obiektu do pliku - serializacja
Ostatnio zmodyfikowano 2014-10-27 22:32
Marox44 Temat założony przez niniejszego użytkownika |
Zapisywanie obiektu do pliku - serializacja » 2014-10-26 18:23:25 Witam, Ostatnio zacząłem uczyc sie o zapisie danych do plikow binarnych. Potrzebuje zapisać właśnie w takim pliku obiekt danej klasy. Dowiedziałem się tylko, że trzeba napisać metody serializacji i deserializacjii i że aby to zrobić trzeba znać rozmiar tego co się chce zapisać. Wszystko, co udało mi sie znaleść na ten temat to użycie czegoś o nazwie //boost//, przy czym potrzebuje stworzyć to możliwie 'ręcznie', bez użycia gotowych bibliotek. Tak wygląda klasa: class MojeZadanie { public: MojeZadanie() { } ~MojeZadanie() { } MojeZadanie( int numer, int data, string tresc, int datawykonania, int priorytet, int obrazek ); int numer; int data; string tresc; int datawykonania; int priorytet; int obrazek; MojeZadanie * next; MojeZadanie * prev; };
Sprawdziłem sizeof tej klasy - 32 (z tym że wskaźniki wskazują na dwa takie same obiekty... czyli chyba jeszcze 2x24 ... :/ ) Co się jeszcze dowiedziałem, to to że (podobno) najlepiej jest użyć czegoś w rodziaju buforu w tablicy dynamicznej, a co do wskaźników to trzeba dołożyć do serializacji to, na co wskazują. Prosiłbym o pomoc, chociaż jak się za to zabrać i ew. w miarę możliwości wyjaśnienie ogólnej zasady działania takiego mechanizmu :) Pozdrawiam, |
|
pekfos |
» 2014-10-26 20:33:21 Dopisz metodę, która do jakiegoś bufora (std::vector<char>?) będzie wstawiać swoje dane i drugą, do odczytywania. Implementacja zależy od potrzeb i konkretnej klasy. Przez sizeof i rzutowanie wskaźników nie da się tego serializować. |
|
Marox44 Temat założony przez niniejszego użytkownika |
» 2014-10-27 22:32:53 Okej, dzięki za podpowiedź Spróbowałem na razie z użyciem zwykłego strumienia i pętli while żeby po prostu zapisywał kolejne obiekty, na razie z jednym tylko polem i problem jest taki, że owszem, przy zapisie zapisuje po kolei wszystkie elementy, lecz przy wczytaniu wczytuje wszystkie na raz do jednego obietku :/ (np. jak na zapisie mam 5 elementów z wartościami kolejno 1 2 3 4 , to po wczytaniu tworzy jeden element z wartością 1234) |
|
« 1 » |