Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
bool CKundenVerwaltung::m_Laden () { ifstream Input("Kunden.ku",ios::binary); Input.read ((char*) &m_lKundenNormal,sizeof (m_lKundenNormal)); Input.close (); if (Input==NULL) return false; else return true; } |
C-/C++-Quelltext |
|
1 2 3 |
file << liste.size(); for(std::list<...>::iterator it = liste.begin(); it != liste.end(); ++it) file << *it; |
Administrator
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
std::ostream& operator <<(std::ostream& lhs, const DeineKlasse& rhs) { // Hier die Daten deines Objekts in den Stream schreiben // oder eine Methode aufrufen, die das erledigt. // ... return lhs; } std::istream& operator >>(std::istream& lhs, DeineKlasse& rhs) { // Hier die Daten deines Objekts aus dem Stream lesen // oder eine Methode aufrufen, die das erledigt. // ... return lhs; } |
Quellcode |
|
1 2 |
char* out=new char[sizeof(Variablentyp)]; out=reinterpret_cast<char*>(Variable); |
Zitat von »"NicoWe"«
Du musst die Operatren selber schreiben, weil, wenn du einfach die Klasse in die Datei schreibst, es zu Problemen mit Pointern kommt. Du kannst normale Variablen einfach in einen Char casten:
Quellcode
1 2 char* out=new char[sizeof(Variablentyp)]; out=reinterpret_cast<char*>(Variable);
(nur pseudocode)
C-/C++-Quelltext |
|
1 |
char* out = reinterpret_cast<char*>( &variable ); |
Zitat von »"NicoWe"«
Quellcode
1 2 char* out=new char[sizeof(Variablentyp)]; out=reinterpret_cast<char*>(Variable);
C-/C++-Quelltext |
|
1 2 3 |
char* out=new char[sizeof(VarType)+1]; out=reinterpret_cast<char>(Var); out[sizeof(VarType)]='\0' |
Das geht mit Sicherheit nicht. Du kannst weder einen char einem char* zuweisen, noch zu char reinterpret_casten (war wahrscheinlich ein Schreibfehler). Und was sollte die Nullterminierung bringen? Das char* hat nichts mit einem C-String zu tun... Abgesehen davon hättest du da ein Memory-Leak und undefiniertes Verhalten, wenn der Code kompilieren würde. Und wie David_pb schon andeutete, sollte man den Zeiger und nicht den Speicher selbst umwandeln...Zitat von »"PCShadow"«
C-/C++-Quelltext
1 2 3 char* out=new char[sizeof(VarType)+1]; out=reinterpret_cast<char>(Var); out[sizeof(VarType)]='\0'
also zumindest das geht, auch wenns äußerst unkonventionell und leistungsverschwendung ist.
Quellcode |
|
1 2 3 |
char* out=new char [sizeof(VarType)+1]; memcpy(out, Var, sizeof(Vartype)); out[sizeof(VarType)]; |
Quellcode |
|
1 2 3 |
char* out=new char [sizeof(VarType)+1]; memcpy(out, &Var, sizeof(VarType)); out[sizeof(VarType)] = '\0'; |
Werbeanzeige