Maps in Datei abspeichern
-
hallo,
wenn ich die Map komplett iteriere und abspeichere, kann ich dann nicht ein Problem bekommen, wenn ich diese Daten aus der Datei auslesen möchte?
Ich meine, ich speichere doch in der Map strings ab und als Wert dazu ints. Wie kann ich denn auf Basis von Strings iterieren?
-
Zweistein97 schrieb:
Wie kann ich denn auf Basis von Strings iterieren?
So wie bei jedem anderen Typ? Was soll an Strings speziell sein?
Der Iterator gibt dereferenziert ein
std::pairmit Key und Value zurück. Die kannt du ganz normal auslesen...
-
also in etwa so:
typedef std::map<std::string,int>::const_iterator MCI; for(MCI itr = adressen_map.begin(); itr != adressen_map.end(); itr++) { output << itr->first << '\t' << itr->second << '\n'; }
-
Hyde++ schrieb:
also in etwa so:
typedef std::string::const_iterator SCI; for(SCI itr = adressen_map.begin(); itr != adressen_map.end(); itr++) { output << itr->first << '\t' << itr->second << '\n'; }
Du meinst wohl eher einen map-Iterator.
-
ohhh, ja klar! peinlich!
-
Ausserdem könntest du dir unnötige Kopien sparen, indem du
++itrstattitr++schreibst. Manche Leute speichern sich sogar denend()-Iterator, wenn er konstant bleibt
(Wird beides kaum etwas ausmachen, aber ist gut zu wissen in Situationen, wo der Iterationsoverhead ins Gewicht fällt)
-
Hyde++ schrieb:
also in etwa so:
typedef std::map<std::string,int>::const_iterator MCI; for(MCI itr = adressen_map.begin(); itr != adressen_map.end(); itr++) { output << itr->first << '\t' << itr->second << '\n'; }gut! Danke für den Beispielquelltext

Nur arbeitest du mit zeilenumbrüchen innerhalt einer Datei.
Als eher unerfahrener Programmierer würde ich gern wissen, wie man etwas ausliest.
habt ihr hier eine Ahnung?
-
Zweistein97 schrieb:
Als eher unerfahrener Programmierer würde ich gern wissen, wie man etwas ausliest.
habt ihr hier eine Ahnung?mit getline() bzw. Stream-Operator die beiden Werte lesen und dann per insert() in die map<> einfügen.
-
Vielleicht könnte dir dieser Thread helfen, in dem ich ein ähnliches Problem hatte:
-
CStoll schrieb:
Zweistein97 schrieb:
Als eher unerfahrener Programmierer würde ich gern wissen, wie man etwas ausliest.
habt ihr hier eine Ahnung?mit getline() bzw. Stream-Operator die beiden Werte lesen und dann per insert() in die map<> einfügen.
Es fände es echt gut, wenn du mir ein Codebeispiel geben würdest. Beim Googlen bin ich darauf gestoßen (Um ehrlich zu sein, war das das einzige womit ich etwas anfangen konnte):
http://www.willemer.de/informatik/cpp/iostream.htm
Die Erklärung auf dieser Seite ist aber zu kurz für mich, damit ich es verstehe...

-
Ach nun komm. Die ersten Treffer bei jeder einigermaßen gut gestellten Google-Anfrage dürften diese sein:
http://www.cplusplus.com/reference/string/getline/
http://www.cplusplus.com/reference/iostream/istream/operator>>/Außerdem sollte das in so ziemlich jedem Lehrbuch zu C++ schätzungsweise auf Seite 2 stehen.
Und was willst du noch mehr? Der Link sind 4 sehr große Bildschirmseiten. Du erwartest doch nicht, dass hier jemand noch mehr Erklärung als das liefert?
-
zu beachten ist, das diese Seiten auf Englisch sind, und ich es im Englischen als 13 Jähriger noch nicht so weit bin....