einfaches Serialisieren: Probleme beim Einlesen
- 
					
					
					
					
 Ich versuch mich grad dran ein einfaches Struct mit einem ofstream auszugeben und durch einen ifstream wieder einzulesen. Das Rausschreiben (mit ios::binary) geht natürlich auch ohne Probleme aber beim Einlesen hapert es dann. 
 Anstatt, dass "in >> version" 1 ergibt, wird die gesamte Zeile (bis zum ersten String) eingelesen.Muss ich mich selbst drum kümmern, dass alles echt byteweise abgespeichert wird? 
 Wenn ja - wie??#include <string> #include <fstream> using namespace std; struct T { static const short VERSION; T() : Wert1(0), Wert2(0), Text("0") {} long Wert1; long Wert2; string Text; friend ostream& operator <<(ostream& out, const T& obj); friend istream& operator >>(istream& in, T& obj); }; short const T::VERSION(1); ofstream& operator<<(ofstream& out, const T& obj) { out << obj.VERSION; out << obj.Wert1; out << obj.Wert2; out << obj.Text; return out; } ifstream& operator>>(ifstream& in, T& obj) { short version = 0; in >> version; if(version != T::VERSION) return in; in >> obj.Wert1; in >> obj.Wert2; in >> obj.Text; return in; } int main() { T zz; zz.Wert1 = 234; zz.Wert2 = 1; zz.Text = "Ru"; ofstream out("C:\\temp\\TEST.txt", ios::binary); if(out.is_open()) { out << zz; out.close(); } T BB; ifstream in("C:\\temp\\TEST.txt", ios::binary); if(in.is_open()){ in >> BB; in.close(); } int i = 0; return 0; }
 
- 
					
					
					
					
 wenn du binary speicherst bzw. ausliest, 
 solltest du das besser mit write und read machen,
 der op>> << der iostreams ist da leider unzuverlässig.
 Ansonsten musst du beim speichern einfach zwischen
 die zahlen ein ' ' packen, dann gehts auch.
 
- 
					
					
					
					
 Danke, in meinem Hirn hat's grad zweimal *Ahhh* gemacht! //EDIT 
 Ist aber schon etwas "schade", dass ich dann alles in einen char* casten muss. *baa*