Forum: Compiler & IDEs Datei binär kopieren


von Hans (Gast)


Lesenswert?

Hi hab mir einen Code geschrieben der mir eine Datei binär kopiert.
Ich überprüfe nach dem schreiben von 500 Bytes die Position und sie sind
nicht gleich groß!?

Wo liegt den mein Fehler?
1
  //Datei screiben 
2
    ofstream wf;
3
    ifstream rf;
4
                unsigned char tmp;
5
    rf.open("C:\\daten.bin",ifstream::in | ios_base::binary);
6
    wf.open("C:\\save.bin",ios_base::out | ios_base::binary );
7
  
8
          for(int i=0;i < 500;mm++)
9
    {
10
      rf>>tmp;
11
      
12
      wf<<tmp;
13
      wf.flush();
14
      
15
    }
16
    //hier überprüfe ich die position
17
    pos  =wf.tellp();
18
    pos1=rf.tellg();

von Klaus W. (mfgkw)


Lesenswert?

Hast du dir die kopierte Datei mal angesehen?
Da fehlen wohl die Leerzeichen.

Außerdem wären vollständige und korrekte Quelltexte besser als 
unvollständige und falsch kopierte...

von Rolf Magnus (Gast)


Lesenswert?

Hans schrieb:
> Hi hab mir einen Code geschrieben der mir eine Datei binär kopiert.

Der kopiert die Datei nicht binär, denn das hier:

>       rf>>tmp;
>
>       wf<<tmp;

sind Operatoren, um Text zu lesen bzw. schreiben. Wenn du hier binär 
kopieren willst, bietet es sich an, gleich direkt filebuf zu verwenden, 
statt streams. Siehe
http://www.cplusplus.com/reference/iostream/filebuf/

von Klaus W. (mfgkw)


Lesenswert?

es geht auch mit streams, man muß nur sagen, daß white space
nicht wegeworfen werden soll:
1
     rf.open...
2
     rf >> std::noskipws;
3
     for( ...

von P. S. (Gast)


Lesenswert?

Ich wuerde ja einfach mit fopen, fread, fwrite, fclose...

von Marcus O. (marcus6100)


Lesenswert?

Noch mehr low level wären open/read/write/close. Eigentlich gibts hier 
keinen Grund für stream IO.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.