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.


Anmelden zum Antworten