Du bist nicht angemeldet.

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

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

11

15.04.2011, 19:17

Willkommen im Forum :)
Du hättest auch einen neuen Thread eröffnen können. 8 Jahre alte Threads müssen nicht ausgegraben werden.

Funktioniert das Öfnnen der Datei? Funktioniert das Schreiben?
Du könntest es mal so versuchen:
fwrite(Dungeon_List, sizeof(Dungeon_List), 1, file);
fread(Dungeon_List, sizeof(Dungeon_List), 1, file);

Außerdem kannst du diese Struktur nicht einfach in eine Datei schreiben, da der Datentyp String eine Klasse ist. Du würdest nur ihre Adresse in die Datei schreiben, nicht jedoch die Zeichenkette. Entweder du verwendest statt String Dungeon_Info[20]; z.B. char Dungeon_Info[256][20]; oder du behälst den Typ String bei. Dann musst du aber erst die Länge der vom String beinhalteten Zeichenkette in die Datei schreiben und dann die Zeichenkette selbst (mit z.B. Dungeon_Info[0].c_str()). Beim Lesen musst du genau umgekehrt vorgehen.

Beispiel:
fwrite(Dungeon_List.Dungeon_Info[0].length(), sizeof(Dungeon_List.Dungeon_Info[0].length()), 1, file);
fwrite(Dungeon_List.Dungeon_Info[0].c_str(), sizeof(Dungeon_List.Dungeon_Info[0].c_str()), 1, file);

Lesen:
int iLength;
fread(&iLength, sizeof(iLength), 1, file);
Dungeon_List.Dungeon_Info[0].resize(iLength);
fread(Dungeon_List.Dungeon_Info[0].c_str(), iLength, 1, file);

Außerdem solltest du dir überlegen, ob du nicht die neuen C++-Features für Dateioperationen utzen willst (fstream).

12

16.04.2011, 12:40

Vielen Dank

Zitat


Außerdem kannst du diese Struktur nicht einfach in eine Datei schreiben, da der Datentyp String eine Klasse ist. Du würdest nur ihre Adresse in die Datei schreiben, nicht jedoch die Zeichenkette.


Das hab ich mir fast gedacht, nachdem beim speichern und neu laden wieder der selbe Inhalt in meinem Feld war, nach beenden und neu starten des Programms jedoch nicht mehr.

Ich hab mir jetzt eine Funktion geschrieben, die mir die Strings in ein char-Feld kopiert, um es dann speichern zu können.

Warum ich nicht mit ifstream/ofstream arbeite. liegt vermutlich daran, dass ich bei meinem Studium ausschließlich in C programmieren muss und es dort eben nicht anders geht

(hab da wohl meine C++ Kenntnisse von früher teilweise vergessen - hab damals schon genug mir fstream gearbeitet)

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

13

16.04.2011, 12:45

Warum ich nicht mit ifstream/ofstream arbeite. liegt vermutlich daran, dass ich bei meinem Studium ausschließlich in C programmieren muss und es dort eben nicht anders geht

du verwendest doch std::string, meines wissens nach ein feature von C++^^
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

14

16.04.2011, 14:54

ich weiß - das hab ich auch noch nicht vergessen - fstream jedoch schon

15

16.04.2011, 15:43

wunderbar - jetzt funktionierts:D

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

16

16.04.2011, 16:00

achso. hab den satz falsch verstanden^^
schau dir mal diese referenz an. sehr praktisch :D
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Werbeanzeige