Co próbujesz zrobić to serializacja. Ten sposób serializacji obiektów nie jest stabilny i bardzo zależy od tego, na jakim lotnisku jest. Lepiej używać jawnej serializacji.
Here to opis tego, czym jest serializacja i dlaczego jest tworzona w ten sposób.
W MessagePack typowy scenariusz serializacji-deserializacji będzie wyglądać następująco:
struct airport {
std::string name; //you can name your airports here
int planeCapacity;
int acceptPlanesFrom;
MSGPACK_DEFINE(name,planeCapacity,acceptPlanesFrom);
};
...
// define your airports
std::vector<airport> airports;
airport a={"BLA",1,2};
airport b={"BLB",3,4};
airports.push_back(a);
airports.push_back(b);
// create a platform-independent byte sequence from your data
msgpack::sbuffer sbuf;
msgpack::pack(sbuf, airports) ;
std::string data=sbuf.data();//you can write that into a file
msgpack::unpacked msg;
// get your data safely back
msgpack::unpack(&msg, sbuf.data(), sbuf.size());
msgpack::object obj = msg.get();
std::cout<<obj<<std::endl;
// now convert the bytes back to your objects
std::vector<airport> read_airports;
obj.convert(&read_airports);
std::cout<<read_airports.size()<<std::endl;
z wyjściem konsoli:
[["BLA", 1, 2], ["BLB", 3, 4]]
2
To zależy od definicji klasy 'airport'. – molbdnilo
lotnisko klasy { int planeCapacity; int acceptPlanesFrom; // i kilka innych intów publicznych: konstruktor .. metody dostępu }; To to. –
Nie wiem, co sprawia, że ludzie myślą, że twój plik wejściowy zawiera poprawne binarne zrzuty obiektów. Nie powiedziałeś tego. Większość odpowiedzi sprawia, że IMO ryzykowne założenie. Przedstawiają również podejście, które było dość poprawne i używane w 'c', ale jest przestarzałe. Jeśli jesteś w 'C++' i zajmujesz się obiektami, to skończy się to bardzo źle wcześniej niż później. Najmniejsza zmiana w "lotnisku" złamie kompatybilność. Czy możesz powiedzieć, w jaki sposób jest tworzony plik wejściowy? Naprawdę nie możesz zaprojektować metody czytania bez znajomości jej przechowywania. Są silnie sprzężeni. Przydatna byłaby również definicja 'lotniska'. – luk32