So, dank eurer Hilfe hab ich endlich die Ansätze verstanden und habe mir mit diesen eine Serializable Klasse gebastelt.
Aber trotzdem habe ich noch ein paar Fragen... Ich hoffe ich nerve keinen.
Und zwar habe ich vorhin auf stackoverflow eine interessante Methode zum vertauschen von Bytes gefunden:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#include <algorithm>
template <class T>
void endswap(T *objp)
{
unsigned char *memp = reinterpret_cast<unsigned char*>(objp);
std::reverse(memp, memp + sizeof(T));
}
file.read( reinterpret_cast<char*>(&i_var) , sizeof(int) );
endswap( &i_var );
file.read( reinterpret_cast<char*>(&d_var) , sizeof(double) );
endswap( &d_var );
cout << i_var << " " << d_var << endl;
|
Quelle:
http://stackoverflow.com/questions/38239…m-a-binary-file
Die Methode oben sowieso die Methoden von Evrey`s Headerdatei scheinen ja für native
Datentypen zu funktionieren, nur funktioniert das auch mit einem Objekt?
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
struct Baum
{
uint32_t alter;
uint32_t art;
// ...
};
Baum tanne;
file.write(reinterpret_cast<char*>(&tanne) , sizeof(Baum));
|
Denn da stellt sich mir die Frage, wie wird ein Objekt binär abgespeichert?
Als ganzes oder werden die Attribute einzeln rein geschrieben?
Wenn es als "ganzes" gespeichert wird, funktioniert der obige Byteswap, richtig?