Ich hab mal alles aufgeschrieben was du zum schreiben und lesen in eine Datei brauchst. Find ich personlich besser weil der lerneffekt größer ist.
Lesen von einer Datei
Stream- Instanz erstellen
ifstream datEingabe;
Datei öffnen
datEingabe.open( c:\\hallo.txt , ios::in); (nur zum Lesen)
datEingabe.open( c:\\hallo.txt , ios::in | ios::binary); ( /n nicht umwandeln)
Öffnen der Datei erfolgreich?
if(datEingabe.good())...
Position des Dateizeigers ermitteln
int iPos = datEingabe.tellg();
Dateiende erreicht?
if(datEingabe.eof())...
Position des Dateizeigers setzen
an den Dateianfang springen
datEingabe.seekg(0, ios::end);
3 Zeichen zurück springen
datEingabe.seekg(-3, ios::cur);
ans Dateiende springen
datEingabe.seekg(0, ios::beg);
Einlesen von der Datei
einzelnes Zeichen
char chZeichen;
datEingabe.get(chZeichen);
eine Zeile
char chZeile[80];
datEingabe.getline(chZeile, 80);
Instanz einer Klasse
CKlasse instanz;
datEingabe.read((char*)&instanz, sizeof(instanz));
Datei schliessen
datEingabe.close();
Schreiben in eine Datei
Stream- Instanz erstellen
ofstream datAusgabe;
Datei öffnen
datAusgabe.open( c:\\hallo.txt , ios::out); (Vorhandene Datei wird überschrieben)
datAusgabe.open( c:\\hallo.txt , ios::app); (anhängen an Datei)
datAusgabe.open( c:\\hallo.txt , ios::out | ios::binary)
/n nicht umwandeln)
Öffnen der Datei erfolgreich?
if(datAusgabe.good())...
Position des Dateizeigers ermitteln
int iPos = datAusgabe.tellp();
Dateiende erreicht?
if(datAusgabe.eof())...
Position des Dateizeigers setzen an den Dateianfang springen
datAusgabe.seekp(0,ios::end);
ans Dateiende springen
datAusgabe.seekp(0,ios::beg);
Schreiben in die Datei einzelnes Zeichen
char chZeichen= x ;
datAusgabe.put(chZeichen);
Text
char chText= Hallo\nWelt! ;
datAusgabe << chText;
Instanz einer Klasse
CKlasse instanz;
datAusgabe.write((char*)&instanz, sizeof(instanz));
Datei schliessen
datAusgabe.close();