Datei gleichzeitig lesen und schreiben



  • hi,
    ja ich weis die Fragen kommen alle 5 min aber ich hab leider ein Problem:

    #include <iostream>
    #include <fstream>
    using namespace std;
    
    int main()
    {
    	fstream DatIO;
    
    	DatIO.open("c:\\windows\\desktop\\text.txt", ios_base::in | ios_base::out | ios_base::app);
    
    	char CTemp[128];
    	int  ITemp = 128;
    
    	DatIO << "HUHUUUUUUUUUUUUU\n"; // <- wenn das da ist funzt getline nicht mehr | wenn es weg ist geht getline wieder...
    
    	DatIO.getline(CTemp,ITemp,'\n');
    
    	cout << CTemp << endl;
    
    	return 0;
    }
    

    wieso ist das so??



  • ich würde nach dem schreiben davon ausgehen, dass der interne zeiger der datei auf das dateiende zeigt nach dem schreiben.
    setz ihn mal mit entsprechender methode wieder auf den anfang, dann sollte es wieder klappen.



  • hardy2 schrieb:

    setz ihn mal mit entsprechender methode wieder auf den anfang, dann sollte es wieder klappen.

    Hab ich getan und es funzt! Danke dir! 🙂



  • Wie heißt die Methode um wieder auf den Anfang der Datei zu zeigen ?



  • seekg()
    seekp()



  • Steht auch in der FAQ.



  • Knuddlbaer schrieb:

    seekg()
    seekp()

    Und wo liegt der Unterschied?!



  • Also:

    seekg() bewegt den Eingabezeiger und
    seekp() den Ausgabezeiger (so hab ich es gefunden..)

    Aber egal welche methode ich verwende das Ergebnis ist gleich...
    Ist das normal?!



  • IN der Tat interessant. ich werds noch mal versuchen, aber wenn Du seekg benutzt, und dann schreibst, geht es ?

    Ansonsten würde ich da sehr vorsichtig sein, wenn Du dateien Random lesen und schreiben willst. Meistens klappt es nur, wenn die geschriebenen teile ( records) gleich groß sind. dann kannst Du einen Lese- und einen schreibzeiger mitführen. Aber pass auf, wenn Du einen Satz gelesen hast, wird der Zeiger um die entsprechende Anzahl Bytes erhöht. Beim Zurückschreiben also an die alte position "seeken". ( hübhs ist auch der effekt, hinter das Ende zu schreiben!)
    Hanns


Anmelden zum Antworten