Datei binär auslesen funktioniert nicht richtig in C++

Nethiros

Cadet 4th Year
Registriert
Nov. 2019
Beiträge
105
Moin,

ich probiere eine Anwendung in C++ zu schreiben, welche eine Datei Binär auslesen soll und diese dann wieder in einen anderen Ordner schreiben soll. Also kein DIREKTES kopieren, sondern erst auslesen und dann wie neue erstellen.

Nun kommt es zu folgenden Problem. Beim neu erstellen der Datei, ist mir aufgefallen, dass ganz selten einfach eine Leerzeile zu viel ausgelesen wurde und das kopierte Bild nicht dargestellt werden kann. Dies ist auf den beiden Bildern zu sehen welche ich angehängt habe. Ich glaube es ist meistens ein \r oder so zu viel eingeschrieben. Hat da jemand ne Idee, woran das liegen könnte?

Danke für eure Antworten!
 

Anhänge

  • Screenshot_24.png
    Screenshot_24.png
    5 KB · Aufrufe: 189
  • Screenshot_25.png
    Screenshot_25.png
    6 KB · Aufrufe: 190
Zuletzt bearbeitet:
Beim input verwendest du std::ifstream mit std::ios::binary
Das must du beim output auch so machen, sonst wird \n zu \r\n
 
  • Gefällt mir
Reaktionen: Nethiros
1) Klingt nach X-Y-Problem: Warum willst du es so machen, anstatt einfach direkt zu kopieren?
2) Wo wird die Zeile eingefügt? Am Ende?

/edit: Hier stand Quatsch.
 
  • Gefällt mir
Reaktionen: BAGZZlash und madmax2010
r0b0t schrieb:
Beim input verwendest du std::ifstream mit std::ios::binary
Das must du beim output auch so machen, sonst wird \n zu \r\n
Vielen Dank für diese Antwort! Das war mein erstes Problem. Es ging letzlich darum für einen Server eine Response Antwort zu schreiben und der zweite Fehler hat sich mittlerweile auch erledigt. Ich hatte ausversehens in der Response noch ein "\n" selbst mitgegeben.
 
Fortatus schrieb:
1) Klingt nach X-Y-Problem: Warum willst du es so machen, anstatt einfach direkt zu kopieren?
Zum Lernen?
Oder weil auf der Datei später was operiert werden sollte?

Da OP direktes Kopieren erwähnt liegt die Vermutung nahe, dass er/sie weiß, dass das auch einfacher geht und sich bewusst dagegen entscheidet. Wenn es schlicht einfach hätte sein sollte hätte es eine Zeile Batch auch getan, da braucht man kein C++ für auspacken.

Aber Regel 1 deutscher Forenkultur: "Das willst du nicht, ich sag dir jetzt mal was du willst"...
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: kuddlmuddl und Toms
Zurück
Oben