ein Map in einer Datei abspeichern

july

Erfahrenes Mitglied
hallo zusammen,

ich würde gern ein Map in einer Datei abspeichern. Habt ihr eine Idee wie man das am besten in C++ macht? Ich habe mit ofstream probiert, bekomme aber einen Compilerfehler:
error: no match for 'operator<<' in 'outmap << ((Myobject*)this)->Myobject::myMap'
C++:
...
ofstream outmap;
...
outmap.open(filename.c_str(), ios::out|ios::trunc|ios::binary);
if(outmap.good())
{
	outmap.clear();
	outmap << myMap << endl;
	outmap.close();
}

Vielen Dank im voraus.

Grüße July
 
Zuletzt bearbeitet von einem Moderator:
Hi

du kannst nicht einfach irgendwas an ofstream übergeben.
Was ist denn myMap für ein Variablentyp?
Selbstgeschrieben oder nicht?
 
myMap ist ein selbstdefienierter Typ:
typedef map<unsigned int, meldung_t> MyMap;
MyMap mymap;
*meldung_t ist eine Struktur.
 
Also nicht selbstgeschrieben.

Generell jedes Element durchlaufen und Key+Value einzeln in die Datei schreiben.
meldung_t muss dabei auch in seine Einzelteile zerlegt werden (dabei auf Pointerzeug aufpassen).
Wie ist denn meldung_t aufgebaut?
 
C++:
typedef struct{
	unsigned int msgId;	// Message_id
	unsigned char melCode;
	kategorie_t kat;
	char loeschBereich;
	char gruppe;
	char melder;
	tMeldArt meldArt;
	char grText[50];
	DWORD timestamp;
}meldung_t;
 
Zuletzt bearbeitet von einem Moderator:
Hallo july,

da du wirst über die map iterieren müssen und key und value einzelnn abspeichern. Solche komplexen Datenstrukturen verarbeitet ofstream nicht.

Ansonsten müsstet du mit der boost-Bibliothek arbeiten. Die Serialisierungfunktionen von boost können auch STL-Container direkt schreiben und lesen.

Gruß
MCoder
 
Zurück