[Brauche-Hilfe]Stream



  • Bin ein Anfänger und Probiere was mit Streams.
    Könntet ihr mir bitte sagen wo der fehler ist.

    Problem:
    Nach dem Ausgeben (komischer Zeichen) ist die Datei leer.
    Wie macht man das die Dateien drin bleiben und nur bei bedarf löscht?.
    Und wie kann ich mehrere Spieler eintragen ohne das es den ersten überschreibt?

    Ich sage schonmal Danke.

    fstream SpielerDatei("SielerDatei.dat",ios::out|ios::binary);
    
    	bool fQuit = false;
    	while(!fQuit)
    	{
    		switch(choice)
    		{
    			case 1:
    				//Spieler soll Eingetragen werden.
    				if(SpielerDatei.is_open())
    				{
    					...					SpielerDatei.write((const char*)&Spieler, sizeof(Spieler));
    				}
    
    				...
    				SpielerDatei.close();
    				break;
    
    			case 2: 
    				if(SpielerDatei.is_open())
    				{
    					while (SpielerDatei.read((char*)&Spieler, sizeof(Spieler)));
    					...
    				}
    
    				break;
    
    			default: fQuit = true;
    				break;
    		}
    	}
    


  • hi,
    öffne die Datei wie folgt, um weitere Inhalte anzuhängen und sie nicht jedesmal zu löschen:

    ofstream datei_out("file.dat",ios::out|ios::app);
    

    Durch diese Art der Öffnung wird der neue Inhalt immer am Ende der Datei angehängt.
    Das ios::binary bewirkt, dass die Datei im Binärformat beschrieben und gelesen wird, deshalb vielleicht die komischen Zeichen?!
    Schau dir evtl. noch mal Ein/Ausgabestreams in den FAQ's an.

    Tschau Gartenzwerg



  • kann man nicht binär reinschreiben und wieder "entcodiert" darstellen lassen?



  • hi,
    klar kann man das.
    Beim Öffnen eines ofstreams musst du dann wie folgt vorgehen:

    ofstream datei_out("file.dat",ios::out|ios::app|ios::binary);
    

    Beim Öffnen eines ifstreams:

    ifstream datei_in("file.dat",ios::in|ios::binary);
    

    Schau dir doch nochmal den Artikel in den FAQ's an: hier

    EDIT: Codebsp. berichtigt

    Tschau Gartenzwerg



  • habs geändert aber da gibt er mir das hier raus:

    error C2039: 'append' : Ist kein Element von 'basic_ios<char,struct std::char_traits<char> >'
    error C2065: 'append' : nichtdeklarierter Bezeichner

    hab wohl ein include vergessen...

    habe im moment nur fstream drin.



  • hi,
    sorry, es muss natürlich:

    ofstream datei_out("file.dat",ios::out|ios::app|ios::binary);
    

    heißen.

    Tschau Gartenzwerg



  • kennt jemand vielleicht noch eine seite wo man mehr über streams lesen kann ?

    kriege das net so richig gebacken (kommt nun : Interner compiler fehler)

    wenn ihr paar seiten kennt postet die bitte.

    thx





  • oh da hab ich was zu lesen ^^

    big thx


Log in to reply