PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateiarbeit unter C++


Nasenbaer
2003-01-04, 19:29:44
Hi,
habe mal eine Frage bezüglich der Dateiarbeit. Bisher ist mir die Methode mittels fopen(). Soweit ich weiß arbeit man unter C++ aber nicht damit sondern mit Streams oder so!?
Wie macht man Dateiarbeit nach C++ Standard?

Mfg Nasenbaer

Vedek Bareil
2003-01-05, 01:38:07
Einlesen:

#include <fstream.h>

fstream infile; //Instanziiere die Klasse fstream

infile.precision(8); /*legt die Anzahl einzulesender
Dezimalstellen fest oder so, braucht man
nicht unbedingt */

infile.open("Dateiname", ios::in); //Eingabedatei öffnen

infile >> Wert1 >> Wert2 >>nxl;
/*in der ersten Zeile der Datei Wert1 und Wert 2 einlesen, mit nxl
in die nächste Zeile springen. nxl muß man glaub ich selbst
programmieren, ob es dafür ne Standardfunktion gibt, weiß ich nicht */

infile.close(); //Eingabedatei schließen

Ausgabe:

#include <fstream.h>

fstream outfile //fstream instanziieren

//Formatierungsanweisungen:
outfile.setf(ios::scientific);
outfile.precision(8);

outfile.open("Dateiname", ios::out); //Ausgabedatei öffnen

outfile << Wert1 << " "<< Wert2 <<endl;
*/Wert1 und Wert2 mit zwei Leerzeichen dazwischen in die erste Zeile
der Datei ausgeben, dann in die nächste Zeile springen*/

outfile.close(); //Ausgabedatei schließen

Eine Implementation von nxl sieht z.B. so aus:

/* -------------------------------------------------
routine moves pointer of input file to next line
-------------------------------------------------
*/
istream &nxl(istream& is)
{
char xcr[257];

is.getline(xcr,256);
return is;
}

Nasenbaer
2003-01-05, 02:24:07
Thx!
Wert1 und 2 können allerdings auch einfache Strings sein oder? Möchte nämlich ne Error Klasse schreiben, die Log-Files schreibt.
Und dabei dachte ich mir, wenn ich schon ne Klasse schreibe dann kann der Rest auch in C++ gehalten sein. :)

Mfg Nasenbaer