Textdatei auslesen
-
Hallo!
In einem Programm werden per ofstream etc verschiedene Werte in eine Textdatei geschrieben. Diese stehen alle untereinander. Nun möchte ich diese Werte auch wieder einzeln Zeile für Zeile auslesen und wieder in ein Feld schreiben. Wie geht das, gibts da einen Befehl für ?
Hier ist einmal der Quelltext der Fileausgabe:void statussicherung()//Sicherung globalen Statusvariablen { double sicherung[12]; int n; //Belegen des Sicherungsfeldes mit den entsprechenden Variablen sicherung[0] = teleskopstatus; sicherung[1] = teleskopspeed; sicherung[2] = beobmodus; sicherung[3] = deklination; sicherung[4] = stundenwinkel; sicherung[5] = kuppelstatus; sicherung[6] = kante; sicherung[7] = monataktuell; sicherung[8] = dayaktuell; sicherung[9] = houraktuell; sicherung[10] = minuteaktuell; sicherung[11] = secondaktuell; cout << " Status sichern ... " ; ofstream sichern ("statussicherung.txt"); n = 0; while (n < 12) { //Sichern der Variablen nacheinander sichern <<sicherung[n]<<'\n'; n = n++; } sichern.close(); cout << " Sicherung abgeschlossen. " << '\n' ; }//-------Sicherung Endeviel dank schonmal !
-
Schau mal in die FAQ: Ströme und Dateien in C++
Da dürfte auch was für dich dabei sein.
-
Hi das müsste so funktionieren.
... ifstream auslesen ("statussicherung.txt"); for (int s=0; s< 12;s++) { getline (auslesen,sicherung [s]); } auslesen.close(); ...
-
macinstyle schrieb:
Nun möchte ich diese Werte auch wieder einzeln Zeile für Zeile auslesen und wieder in ein Feld schreiben.
Es ist nicht notwendig, erst die einzelnen Zeilen zu lesen und danach den Inhalt der gelesenen Zeile noch mal zu interpretieren. Ich unterstelle mal, dass alle Werte von 'teleskopstatus' bis 'secondaktuell' Zahlenwerte sind, wobei es keine Rolle spielt, wenn die eine Variable ein double und eine andere ein int ist.
Lese einfach die Werte - so wie Du sie benötigst - aus der Datei wieder ein. Das geht wie folgt:double teleskopstatus; double teleskopspeed; double beobmodus; double deklination; double stundenwinkel; double kuppelstatus; double kante; double monataktuell; double dayaktuell; double houraktuell; double minuteaktuell; double secondaktuell; ifstream file("statussicherung.txt"); if( file >> teleskopstatus >> teleskopspeed >> beobmodus >> deklination >> stundenwinkel >> kuppelstatus >> kante >> monataktuell >> dayaktuell >> houraktuell >> minuteaktuell >> secondaktuell ) cout << "Werte korrekt lesen " << endl;ein file.close() ist nicht notwendig, das geschieht automatisch im Destruktor von ifstream.
Gruß
Werner