[gelöst]Textdateien auslesen, Zeilenweise in Strings abspeichern
-
Hallo,
dies ist mein erster Beitrag in diesem Forum.
Ich denke hier kann man mir weiter helfen.
Seit 2 Wochen bringe, bzw. versuche, ich mir C++ bei.
Ich schreibe ein Programm, das in der Konsole ein "Virtuelles Charakterblatt"
für ein Pen and Paper darstellen soll.Am ende meines Programmes speichert es alle Daten in eine Textdatei ab:
/////////////speichervorgang//////////////////// speicherstream.open(dateinamen.c_str(), ios_base::out); speicherstream << charakternamen << endl; speicherstream << klasse << endl; speicherstream << rasse << endl; speicherstream << k1 << endl; speicherstream << k2 << endl; speicherstream << k3 << endl; speicherstream << k4 << endl; speicherstream << k5 << endl; speicherstream << k6 << endl; speicherstream << k7 << endl; speicherstream << k8 << endl; speicherstream << k9 << endl; speicherstream << k10 << endl; speicherstream << k11 << endl; //speicherstream << k << endl; speicherstream.close(); ////////////////////////////////////////////////Diese Daten sollen beim Starten des Programms wieder geladen werden,
sie sollen wieder Zeilenweise in die Strings und Ints gespeichert werden.
Ich habe etwas selber rumprobiert aber bin gescheitert.
//////////////////////ladevorgang///////////////////////// ladestream.open(dateinamen.c_str(), ios::in); n = 0; while ( !ladestream.eof()) { ladestream.get(ausgabechar); temp = ausgabechar; cout << temp; } ladestream.close(); //////////////////////////////////////////////////////////Ich hoffe jemand kann mir erklären wie ich dies richtig machen kann.
MfG
Rarebit
-
#include <string>std::string ausgabestring; while(getline(speicherstream, ausgabestring, '\n')) std::cout << ausgabestring << '\n';
-
Rarebit schrieb:
Am ende meines Programmes speichert es alle Daten in eine Textdatei ab
Es wäre noch wichtig zu wissen, was für Typen denn diese Daten haben (charakternamen, klasse, rasse, kXX).
Rarebit schrieb:
Diese Daten sollen beim Starten des Programms wieder geladen werden, sie sollen wieder Zeilenweise in die Strings und Ints gespeichert werden.
In was für
strings undints? Wie "zeilenweise"? Und warum?
-
Hallo Rarebit,
Willkommen im C++-Forum.
Rarebit schrieb:
Am ende meines Programmes speichert es alle Daten in eine Textdatei ab:
/////////////speichervorgang//////////////////// speicherstream.open(dateinamen.c_str(), ios_base::out); speicherstream << charakternamen << endl; speicherstream << klasse << endl; speicherstream << rasse << endl; speicherstream << k1 << endl; speicherstream << k2 << endl; speicherstream << k3 << endl; speicherstream << k4 << endl; speicherstream << k5 << endl; speicherstream << k6 << endl; speicherstream << k7 << endl; speicherstream << k8 << endl; speicherstream << k9 << endl; speicherstream << k10 << endl; speicherstream << k11 << endl; //speicherstream << k << endl; speicherstream.close(); ////////////////////////////////////////////////wenn Du die 'Daten' so abspeicherst, so kannst Du sie im Prinzip(!) auch genau so wieder so einlesen - also:
/////////////ladevorgang//////////////////// std::ifstream ladestream( dateinamen.c_str() ); ladestream >> charakternamen; ladestream >> klasse; ladestream >> rasse; ladestream >> k1; ladestream >> k2; ladestream >> k3; ladestream >> k4; ladestream >> k5; ladestream >> k6; ladestream >> k7; ladestream >> k8; ladestream >> k9; ladestream >> k10; ladestream >> k11; if( ladestream) cout << "Laden der Daten ok" << endl;kommt natürlich im Detail drauf an, was das für Typen sind. Falls '
charakternamen' einstd::stringist und Leerzeichen enthalten kann, solltest Du diese Zeile durchgetline( ladestream, charakternamen );ersetzen.
Btw.: wo lernt man eigentlich dieses
while ( !ladestream.eof()).. das war schon zu C-Zeiten ein Fehler.
Gruß
Werner
-
k1 k2 usw sind double's und die klasse, rasse und charakternamen strings.
C++:
getline( ladestream, charakternamen );
ersetzen.Btw.: wo lernt man eigentlich dieses
C++:
while ( !ladestream.eof())
.. das war schon zu C-Zeiten ein Fehler.Ich versuche mir C++ mit Youtube und den Suchergebnissen von Google
beizubringen und bin vorgestern auf dieses Forum gestoßen.
Es ist toll das einem hier so schnell geantwortet wird!
-
Btw.: wo lernt man eigentlich dieses
C++:
while ( !ladestream.eof())
.. das war schon zu C-Zeiten ein Fehler.Wieso soll das ein Fehler sein, solange man keine Binärdatei einliest ist es richtig.
-
angryhamster schrieb:
Btw.: wo lernt man eigentlich dieses
C++:
while ( !ladestream.eof())
.. das war schon zu C-Zeiten ein Fehler.Wieso soll das ein Fehler sein, solange man keine Binärdatei einliest ist es richtig.
Hä?
Evtl geht get schief und erst dann sieht man, daß man zu weit gelesen hatte.
desdawegen nach dem get prüfen. Nicht vorher.