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

1

05.09.2005, 23:17

listen in dateien schreiben und lesen

hallo schon wieder,
ich würde gern komplette listen in dateien abspeichern und auch wieder
auslesen koennen.
hab das bisher folgerndermassen probiert:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// prog zum schreiben der daten

char filename[]="dateiname.dat";
vector<int> iValue;
for (int i=0;i<100;i++) // werte reinschreiben;

{
    iValue.pushback(i);
}
// daten speicher

ofstream Ofile (filename,ios::binary);
Ofile.write((char *) &iValue, sizeof(iValue));
Ofile.close();
iValue.clear();

// prog zum einlesen der daten

char filename[]="dateiname.dat";
vector<int> iValue;
ifstream Ifile (filename,ios::binary);
Ifile.read((char *) &iValue, sizeof(iValue));
Ifile.close();


führe ich beide programmteile direkt hintereinander im gleich programm aus (die variablendeklaration im zweiten teil faellt dann natuerlich weg) funktioniert alles einwandfrei und die gelesenen daten entsprechen auch dem in die datei geschriebenen.
sobald ich aber zuerst in einem prog die daten abspeichere und dann spaeter in einem anderen programm mit obiger routine abrufen will kommt nur muell raus und das programm meldet beim beenden einen assertion failure. das ganze scheint nur bei listen zu passieren. sobald ich normal ints oder aehnliches abspeichere hab ich das problem nicht.
was ist bei listen anders und was muss ich denn dann da beachten??
gruss
manne
[/cpp]

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

06.09.2005, 02:44

Du darfst nicht einfach so ein vector-Objekt komplett in eine Datei schreiben. Überleg doch mal... das besteht wahrscheinlich nur aus ein paar Zeigern, und dann schreibst Du ein paar Zeiger in eine Datei, die beim nächsten Laden überhaupt nix mehr zu sagen haben und irgendwo hin zeigen.
Auch müsste Dir die Größe der Datei verdächtig vorgekommen sein. Die ist nämlich immer gleich, egal wie groß Deine Liste ist.
Wie macht man's richtig?

1. Anzahl der Listenelemente in die Datei schreiben
2. Jedes Listenelement einzeln reinschreiben

Also... ein bisschen Nachdenken hilft.
Genauso wie Google...
http://www.google.de/search?hl=de&q=vector+in+datei+schreiben+c%2B%2B