Binäre Datei <-> Textdatei
-
Hallo,
wo liegt der Unterschied zwischen einer Datei, die im binary mode geöffnet wurde, und einer solchen, die im Text-Modus geöffnet wurde?
-
bei dem einen wird binär gelesen/geschrieben und beim andern wird als text geschrieben/gelesen. sprich man kann es mit einem beliebigen texteditor öffnen und lesen
die binärdateien brauchen da wieder was spezielles...
-
Der Unterschied ist, dass beim Windowsbetriebssystem die Zeilenumbrüche anders behandelt werden. Schreibst du in Windows ein '\n' im textmodus, so wird '\n''\r' daraus. Und beim Lesen glaube ich umgekehrt aus '\n''\r' ein '\n', aber da bin ich mir nicht 100% sicher, müsste ich nachschlagen. Und ganz alte Macs sollten '\n' in '\r' umwandeln. Bei Unixen gibt es keine Unterschiede, aber man sollte trotzdem da drauf achten, was man braucht, damit das Programm portabel bleibt.
-
@ Skym0sh0: Ich habe gerade "Hallo Welt" in eine Text- und eine Binär-Datei geschrieben und beides kann ich mit dem Windowseditor lesen.
@ SeppJ: Also ist ios_base::binary nur dafür da, um diese Zeilenumbruch-Unstimmigkeit zu ignorieren?
-
Unter Windows ist es "\r\n", ich musste es auch gerade ausprobieren, was bei "\n\r" passiert: Anscheinend wird noch eine zusätzliche Leerzeile eingefügt (zumindest das Rich-Edit-Control macht dies).
@wurstinator: ios_base::binary ist genau dafür nicht zuständig. Nur bei Weglassen, also Öffnen/Schreiben im Textmodus, wird die Unterscheidung vorgenommen.
Bei Binärdaten möchte man ja nicht, dass zusätzliche Zeichen eingefügt werden, bspw. möchte man seine Bilddaten genau so auf der Festplatte haben, wie sie im Speicher stehen, das Modifizieren dieser Daten wäre in den allermeisten Fällen schlecht.
-
Thorgrim schrieb:
ios_base::binary ist genau dafür nicht zuständig. Nur bei Weglassen, also Öffnen/Schreiben im Textmodus, wird die Unterscheidung vorgenommen.
Genau das habe ich doch gesagt?
Ich wollte aber eher wissen, ob der binary mode noch irgendeinen anderen Effekt hat.
-
Wurstinator schrieb:
Thorgrim schrieb:
ios_base::binary ist genau dafür nicht zuständig. Nur bei Weglassen, also Öffnen/Schreiben im Textmodus, wird die Unterscheidung vorgenommen.
Genau das habe ich doch gesagt?
Nein, du hast das Gegenteil gesagt. binary verfälscht die Daten eben nicht.
Ich wollte aber eher wissen, ob der binary mode noch irgendeinen anderen Effekt hat.
In der Praxis nein, aber theoretisch können da alle möglichen Unterschiede auftreten. Der Unterschied ist halt, dass bei binary die Daten wirklich 1:1 so geschrieben werden wie der Programmierer es angibt, während sie ohne im plattformspezifischen Textdateiformat geschrieben werden.
-
Wurstinator schrieb:
Also ist ios_base::binary nur dafür da, um diese Zeilenumbruch-Unstimmigkeit zu ignorieren?
Oh man, du hast natürlich Recht, ich habe...irgendwas anderes gelesen.
-
Okay, danke

-
Vielleicht wird die Sache verständlicher, wenn man sich andere Dateiformate anschaut, z.B. das Dateiformat PPM (Portable Pixmap) für Bilder.
Dieses gibt es in 2 Varianten, nämlich ASCII sowie binär codiert. Ich denke, der Wikipedia-Artikel dazu ist ganz aufschlussreich.