Problem mit fstream
-
Hallo mal wieder! :p
Folgendes Problem:
#include "Highscore.h" #include <string> #include <iostream> #include <fstream> Highscore::Highscore() : dateiname("Highscore.txt"), highscore(0) { } Highscore::~Highscore() { dat_aus.close(); dat_ein.close(); } void Highscore::setDaten() { dat_aus.open(dateiname.c_str(), ios_base::out); dat_aus<<highscore; dat_ein.open(dateiname.c_str(), ios_base::in); } void Highscore::setHighscore(int counter) { int highscore2; dat_ein>>highscore2; if(counter > highscore2) { dat_aus<<counter<<endl; } else { } } int Highscore::getHighscore() { int highscore3; dat_ein>>highscore3; return highscore3; }Das sind alles Memberfunktionen meiner Klasse "Highscore". Das Programm erstellt schön eine Datei namens "Highscore.txt". Aber dann tauchen gleich zwei Probleme auf:
- Wenn ich die Funktion getHighscore() aufrufe bekomm ich ungefähr folgenden
Wert: -81233243
- In der Datei steht 0 (siehe setDaten()). Wenn ich jetzt z.B. setHighscore(8)
aufrufe, wird die 8 unter die 0 geschrieben. Ich dachte aber ios_base::out
überschreibt den Inhalt der Datei

Danke schon mal im Voraus

Grüße Müllfanatiker
-
Ich dachte aber ios_base::out überschreibt den Inhalt der Datei

ja, wenn du die Datei öffnest steht der Schreibpointer auf dem Anfang der Datei. Aber der bewegt sich mit, wenn du etwas reinschreibst.
Warum schreibst du während das Programm läuft in die Datei? Das würde ich im Dtor machen und im Ctor laden.