Jak okodować funkcję zapisującą dane binarne?

0

Witam! Stanąłem przed problemem którym jest okodowanie funkcji która zapisuje dane binarne do pliku. I nie mam zielonego pojęcia ja kto zrobić. Przecież

  1. Trzeba znać typ danych! A jeśli ktoś zechce zapisać sobie strukturę?

  2. Trzeba rozróżnić czy dane to string czy inny giewont.

Jak można sobie z czymś takim poradzić?

0

Chyba nie rozumiem. Co konkretnie chcesz zrobić? Napisać funkcje, która przyjmuje dowolny obiekt i serializuje go do pliku?

0

Tak. Funkcja my przyjąć dowolny typ danych. Może to być string, char, int, ...
Ale co w przypadku w którym ktoś wyśle strukturę. Np:

struct Player{
   int id;
   string name;
   int points;
} p;
---------------------
p.id=1;
p.name="Janusz"
p.points="100";

WriteData(p,sizeof(p),"C:/file.bin"); // zakładając, że pierwszy argument to dane, drugi wielkość, a trzeci ścieżka

Dodatkowo. Przecież inaczej trzeba zapisywać string a inaczej np. int.

0
PrezesiQ napisał(a):

Tak. Funkcja my przyjąć dowolny typ danych. Może to być string, char, int, ...
Ale co w przypadku w którym ktoś wyśle strukturę. Np:

struct Player{
   int id;
   string name;
   int points;
} p;
---------------------
p.id=1;
p.name="Janusz"
p.points="100";

WriteData(p,sizeof(p),"C:/file.bin"); // zakładając, że pierwszy argument to dane, drugi wielkość, a trzeci ścieżka

Dodatkowo. Przecież inaczej trzeba zapisywać string a inaczej np. int.

Możesz napisać coś na wzór stringstream z przeciążonymi operatorami << i >> dla różnych typów.

Ale tak czy siak serializacja struktury za pomocą sizeof się nie uda. Nie zapiszesz tak std::string czy std::vector. Serializacja wskaźników czy referencji też będzie bezcelowa. Dodatkowo przecież nie wszystkie zmienne składowe wymagają zapisywania, bo można je regenerować na podstawie innych zmiennych (np. jakiś lookup w postaci unordered_map).

1 użytkowników online, w tym zalogowanych: 0, gości: 1