Unterschied zwischen Datei-Modi



  • Hi,

    worin besteht der Unterschied zwischen dem normalen Öffnen, und dem binären (ios::bin) öffnen von Dateien?

    Letztendlich bestehen doch alle Dateien nur aus Bytes, und es macht keinen Unterschied, ob das Byte ein Zeilenumbruch, ein Buchstabe, oder sonstwas ist. Wenn ich die Datei in einem String speichere sollten doch so oder so die Bytes eins zu eins übertragen werden, oder?

    Greetz,
    Neo





  • Bei binärer Ein- und Ausgabe auf Dateien werden die Daten nicht in "lesbarer" Form abgelegt, sondern die Interndarstellung der Speicherinhalte wird direkt (byteweise) in die Datei übertragen. Binäres Schreiben einer long-Variablen benötigt also stets vier Byte Speicherplatz, wogegen der erforderliche Speicherplatz bei formatierter Ausgabe von der Größe der Zahl bzw. vom Format abhängt.

    ich denke mal das dass verstaendlich ist



  • Cpt.Tanga schrieb:

    Bei binärer Ein- und Ausgabe auf Dateien werden die Daten nicht in "lesbarer" Form abgelegt, sondern die Interndarstellung der Speicherinhalte wird direkt (byteweise) in die Datei übertragen. Binäres Schreiben einer long-Variablen benötigt also stets vier Byte Speicherplatz, wogegen der erforderliche Speicherplatz bei formatierter Ausgabe von der Größe der Zahl bzw. vom Format abhängt.

    ich denke mal das dass verstaendlich ist

    das bezieht sich auf die Art, wie man in die Datei schreibt. Hat aber nichts mit dem Dateimodus zu tun, man kann auch binär in eine Textdatei schreiben.



  • DrGreenthumb schrieb:

    bezieht sich auf die Art, wie man in die Datei schreibt

    :

    Bei binärer Ein- und Ausgabe

    DrGreenthumb schrieb:

    Hat aber nichts mit dem Dateimodus zu tun

    und gerade die dateimodi legt doch fest wie die datei geoeffnet/geschlossen bzw. wie geschrieben und gelesen wird.

    DrGreenthumb schrieb:

    man kann auch binär in eine Textdatei schreiben.

    wurde ja auch nirgents das gegenteil behauptet



  • Cpt.Tanga schrieb:

    und gerade die dateimodi legt doch fest wie die datei geoeffnet/geschlossen bzw. wie geschrieben und gelesen wird.

    ja, aber nur bezogen auf die Zeilenumbrüche.

    Ob es am Ende in Menschenlesbarer Form ist, hängt davon ab ob ich mit file<<42 oder file.write(42) schreibe.



  • also trifft diese deffinition wohl nur auf write zu 😃 .



  • Danke für eure Antworten,

    jedoch ist das einzige was mir einleuchtet, dass Variablen direkt binär zu schreiben und ihre Bytes in Stringform zu schreiben klar unterschiedliche ausgaben ergeben werden.

    Jedoch arbeitet man für gewöhnlich bei Dateien nur mit Strings, und hier kann ich mich nur wiederholen: Egal, ob man einen String schreibt oder liest, es geschieht *immer* Byteweise, da ist es dem Texteditor egal, ob er grad das Byte 32 oder ein Leerzeichen bekommen hat, ist beides das selbe Byte.

    Kann mich jemand auf verständliche und logische Weise aufklären? 😉



  • NeoInferno schrieb:

    Egal, ob man einen String schreibt oder liest, es geschieht *immer* Byteweise, da ist es dem Texteditor egal, ob er grad das Byte 32 oder ein Leerzeichen bekommen hat, ist beides das selbe Byte.

    ja, das trifft auf alle Zeichen zu, ausser dem Linefeed (\n). Da mischt sich, je nach Dateimodus, die Standardbibliothek mit ein.
    Siehe Link den ich gepostet habe.


Anmelden zum Antworten