In Datei auf bestimmte Stelle springen



  • Hi!

    ich öffne die Datei mit ofstream zum schreiben.

    Es steht bereits text drinnen. Jetzt will ich beispielsweise vom Start weg 5 Zeichen nach vorne springen, und von dort aus anfangen Text einfügen.

    Ich glaub wenn ich einfügen will an der Stelle, einfach öffnen mit ios::app, ansonsten mit ios::out, richtig?

    Jetzt brauche ich nur die Operation, um Zeichen nach vorne zu springen.

    mfg XaTrIxX



  • XaTrIxX schrieb:

    Ich glaub wenn ich einfügen will an der Stelle, einfach öffnen mit ios::app, ansonsten mit ios::out, richtig?

    ios::app setzt den zeiger auf das ende der datei.

    Jetzt brauche ich nur die Operation, um Zeichen nach vorne zu springen.

    ostream::seekp



  • Einfügen wird eng. Du würdest an eine Stelle springen und dort die Daten überschreiben. Einfügen ist praktisch nur möglich durch kopieren...



  • Es werden die Zeichen, die ich mit seekp überspringen will einfach als leerzeichen neu gespeichert. Frage ist warum...

    Code:

    ofstream schreiben;
    schreiben.open("/win.ini", ios::out|ios::binary);
    if(!schreiben)
    {
    	cout << "Die Datei konnte nicht geöffnet werden! \n";
    }
    schreiben.seekp (10, ios::beg);
    while(i<10)
    {
            schreiben << mal; //mal ist ein Sring "abcd"
    	i++;
    }
    

    Die Datei sah vorher so aus:

    qqqqqqqqqqqqqqqqqqqqqqq
    

    und jetzt so:

    abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd
    

    Mein Ziel wäre das:

    qqqqqqqqqqabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd
    

    Wenn ich schreiben.open mit ios::app öffne dann wird angehängt als wär nichts, springt mit dem zeiger wahrscheinlich schon nach ganz hinten.

    Bitte um Tipps



  • Wenn Du ohne ios::app die Datei öffnest, dann geht der vorherige Inhalt verloren. Dazu öffne mit ios::app und spring an die Stelle, wo Du hinwillst.

    ofstream out(filename, ios::app); // ios::app springt ans ende
    out << "das steht ganz hinten";
    

Anmelden zum Antworten