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 |
struct Player { unsigned int alter; unsigned int level; int Erfahrung; char name[256]; char nachname[256]; char rasse[256]; char passwort[256]; }; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
extern Player Charakter; void Profil_Speichern(void) { Charakter.level = 1; Charakter.Erfahrung = 0; cout << "Unter welchem Namen m\224chtest du deine Charakterinforamtionen \nspeichern? :"; std::cin >> dateiname; dateiname.insert(0, "Data\\Saves\\"); if (! (dateiname.substr(dateiname.length()-4)==".sav")) { dateiname.append(".sav"); } std::ofstream Save(dateiname.c_str(), std::ios::binary); cout << "Datei wird unter '" << dateiname << "' gespeichert...\n"; cout << endl; Sleep (500); Save.write ((char*) &Charakter.name, sizeof (&Charakter.name)); Save.write ((char*) &Charakter.nachname, sizeof (&Charakter.nachname)); Save.write (reinterpret_cast<char*> (&Charakter.alter), sizeof (unsigned int)); Save.write ((char*) &Charakter.rasse, sizeof (&Charakter.rasse)); Save.write ((char*) &Charakter.passwort, sizeof (&Charakter.passwort)); Save.write (reinterpret_cast<char*> (&Charakter.level), sizeof (unsigned int)); Save.write (reinterpret_cast<char*> (&Charakter.Erfahrung), sizeof (int)); Save.close (); std::ifstream Load (dateiname.c_str(), std::ios::binary); if( GetFileAttributes( dateiname.c_str() ) == 0xFFFFFFFF ) { cout << "It appeared an error during save-process." << endl; Sleep (2500); Vormenue (); } else cout << "Profile-Save has been completed successfully! \1 \2 \n"; Sleep (2000); cout << endl; Willkommen (); } |
C-/C++-Quelltext |
|
1 2 3 4 |
char buffer[256]; Save.write (buffer, 256); Save.write (reinterpret_cast<char*> (&buffer), sizeof (char*)); |
Zitat von »"R3sident3vil"«
1. Weiß jetzt nicht was du für C casts meinst.
2. Ich finde es nicht verkehrt, wenn man 256 Felder zur Verfügung stellt.
3. Das unsigned int ist bei Alter und Level gut, weil die beiden Variablen keine Werte, die < 0 sind annemen sollen.
C-/C++-Quelltext |
|
1 2 |
const char* p = ( const char*)( &irgendwas ); int i = int( irgendwasandres ); |
C-/C++-Quelltext |
|
1 2 3 4 |
static_cast<>() dynamic_cast<>() reinterpret_cast<>() const_cast<>() |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
void Profil::save() const { Charakter.level = 1; Charakter.Erfahrung = 0; std::cout << "Unter welchem Namen m\224chtest du deine Charakterinforamtionen\nspeichern? " << std::flush; std::string file_name; std::getline(std::cin, file_name); file_name.insert(0, "Data\\Saves\\"); if (file_name.substr(file_name.length() - 4) != ".sav") file_name += ".sav"; std::ofstream file_stream_o(file_name.c_str(), std::ios::binary); if (!file_stream_o) return; std::cout << "Daten werden in '" << file_name << "' gespeichert ..." << std::endl; file_stream_o.write(reinterpret_cast<char*>(&Charakter.name), sizeof(char) * Charakter.name.length()); file_stream_o.write(reinterpret_cast<char*>(&Charakter.nachname), sizeof(char) * Charakter.nachname.length()); file_stream_o.write(reinterpret_cast<char*>(&Charakter.alter), sizeof(unsigned int)); file_stream_o.write(reinterpret_cast<char*>(&Charakter.rasse), sizeof(ENUM_RASSE)); file_stream_o.write(reinterpret_cast<char*>(&Charakter.passwort), sizeof(char) * Charakter.passwort.length()); file_stream_o.write(reinterpret_cast<char*>(&Charakter.level), sizeof(unsigned int)); file_stream_o.write(reinterpret_cast<char*>(&Charakter.Erfahrung), sizeof(int)); std::cout << "Profile-Save has been completed successfully! \1 \2 " << std::endl; } |
C-/C++-Quelltext |
|
1 |
sizeof( char ) * |
C-/C++-Quelltext |
|
1 |
reinterpret_cast<char*> |
Zitat von »"Deviloper"«
C-/C++-Quelltext
1 2 3 4 5 6 7 void Profil::save() const { // ... file_stream_o.write(reinterpret_cast<char*>(Charakter.name), sizeof(char) * Charakter.name.length()); file_stream_o.write(reinterpret_cast<char*>(Charakter.nachname), sizeof(char) * Charakter.nachname.length()); // ... }
Werbeanzeige