fstream und seekp



  • Hi

    ich möchte gerne den Inhalt einer Datei überschreiben.
    Dazu habe ich folgenden Code geschrieben:

    fstream datei;
      fstream out;
      AnsiString tmp = "";
      bool start = true;
      char wert;
    
      datei.open("d:\\cpp\\Datei1.exe",ios::in | ios::binary);
      out.open("d:\\cpp\\Datei2.exe",ios::out | ios::binary);
      out.seekp(570048);
      /*if(datei.is_open())
      {
        while(!datei.eof())
        {
          wert = datei.get();
          if(!datei.eof())
          {
            out << wert;
          }
    
        }
      }*/
      out << "Test";
      datei.close();
      out.close();
    

    danach ist aber bei Datei2 (der in die ich schreibe) alles vor Byte 570048 mit '\0' beschrieben. Und der alte Inhalt ist weg. Was mache ich da falsch?

    THX

    Dagsta



  • Hallo,

    Das Flag ios::out kürzt die Datei automatisch auf die Länge von 0 Byte (d.h. löscht deren Inhalt), sofern du es nicht mit ios::in, ios::ate oder ios::app kombinierst.

    Gruß, Caipi.


Anmelden zum Antworten