Öffnungsmodi in C ++

Diese Tabelle zeigt die verschiedenen Modi in C ++, die möglich sind, wenn eine Datei geöffnet wird. Allerdings müssen Sie drei grundlegende Fragen jedes Mal, wenn Sie eine Datei öffnen zu beantworten:

  • Wollen Sie aus der Datei oder schreiben Sie an die Datei zu lesen? Benutzen ifstream zu lesen und ofstream zum Schreiben. Wenn Sie beide wollen zu schreiben und aus der gleichen Datei zu lesen, verwenden Sie die fstream und setzen Sie den Modus in | out, aber viel Glück - es ist viel besser in eine Datei vollständig zu schreiben und schließen Sie es dann, und öffnen Sie es als separates Objekt zum Lesen.

  • Wenn Sie auf die Datei schreiben und es existiert bereits, tun Sie den vorhandenen Inhalt hinzufügen möchten (in diesem Fall offen mit gesetzt) ​​oder die Datei kürzen und neu zu beginnen (in diesem Fall den Einsatz trunc)?

  • Sind Sie lesen oder Text oder Binär-Daten zu schreiben? Beide ifstream und ofstream Standard in den Textmodus. Benutzen binär Modus, wenn Sie lesen oder roh, Nicht-Text-Daten zu schreiben.

Konstanten, die steuern, wie Dateien geöffnet werden
FlaggeBedeutung
ios_base :: appSpringt an die End-of-Datei vor jedem Schreib.
ios_base :: aßSpringt an die End-of-Datei unmittelbar nach dem Öffnen der Datei, wenn itexists.
ios_base :: binaryÖffnen Sie die Datei im Binär-Modus (alternativ ist ein Text-Modus).
ios_base :: inÖffnen Sie die Datei für die Eingabe (implizierte für istream).
ios_base :: outÖffnen Sie die Datei für die Ausgabe (implizierte für ostream).
ios_base :: truncDatei kürzen, wenn es (Standard für ostream) vorhanden ist.

Der primäre Unterschied zwischen Binär- und Textmodus liegt in der Art und Weise, die Zeilenumbrüche behandelt werden. Das Unix-Betriebssystem wurde in den Tagen geschrieben, als Schreibmaschinen immer noch in Mode waren (wenn es genannt wurde # 147-Typisierung # 148- statt # 147-keyboarding # 148-). Unix beendet Sätze mit einem Zeilenvorschub von einem Wagenrücklauf gefolgt.

Nachfolgende Betriebssysteme sah keinen Grund, zwei Zeichen weiterhin mit einem Satz zu beenden, aber sie konnten sich nicht einigen, welches Zeichen zu verwenden. Einige nutzen den Wagenrücklauf, andere verwendet, um den Zeilenvorschub, jetzt umbenannt Newline. Die C ++ Standard ist die einzige Newline.

Wenn eine Datei im Textmodus geöffnet wird, wandelt die C ++ Bibliothek, die die einzelnen Newline-Zeichen in das, was für Ihr Betriebssystem auf die Produktion geeignet ist, ob es sich um eine Wagenrücklauf plus Zeilenvorschub, ein einzelner Wagenrücklauf, ein Zeilenvorschub, oder etwas ganz anderes. Es führt die entgegengesetzte Umwandlung beim Lesen einer Datei. Die C ++ Bibliothek hat keine solche Konvertierungen für eine Datei im Binärmodus geöffnet.

Immer Binär-Modus verwenden, wenn eine Datei zu manipulieren, die nicht in den Menschen lesbaren Format ist. Andernfalls, wenn ein Byte im Datenstrom nur das gleiche wie ein Wagenrücklauf geschieht, zu sein oder ein Zeilenvorschub, der Datei-I / O-Bibliothek wird es ändern.

Menü