Zuhause Persönliche Finanzen Markieren der Ios-Flags in C ++ - Dummies

Markieren der Ios-Flags in C ++ - Dummies

Video: How to green the world's deserts and reverse climate change | Allan Savory 2024

Video: How to green the world's deserts and reverse climate change | Allan Savory 2024
Anonim

Wenn Sie eine Datei öffnen, indem Sie entweder eine ofstream- oder ifstream-Instanz erstellen, können Sie die Art und Weise, wie die Datei geöffnet wird, ändern, indem Sie sogenannte Flags bereitstellen. In Computerbegriffen ist ein -Flag einfach ein kleiner Gegenstand, dessen Vorhandensein oder Nichtvorhandensein einer Funktion sagt, wie etwas zu tun ist. Bei den Klassen vonstream und ifstream ist die fragliche Funktion der Konstruktor.

Ein Flag sieht wie ios:: app aus, wenn Sie einen Compiler verwenden, der nicht vollständig ANSI-kompatibel ist, oder wie ios_base:: app aussieht, wenn Sie einen verwenden, der vollständig ANSI-kompatibel ist. Dieses spezielle Flag bedeutet, dass Sie in eine Datei schreiben möchten, aber Sie möchten an vorhandene Daten anhängen, die sich möglicherweise bereits in einer Datei befinden. Sie geben dieses Flag als Argument des Konstruktors für ofstream an, wie in einem der folgenden Beispiele:

ofstream-Ausgabedatei ("AppendableFile.txt", ios:: app); ofstream-Ausgabedatei ("AppendableFile.txt", ios_base:: app);

Sie können sehen, dass das Flag als zweiter Parameter zum Konstruktor hinzugefügt wird. Neben der App gibt es noch andere Flags, die Sie mit dem Operator oder, | kombinieren können. Zum Beispiel ist ein Flag ios:: nocreate (das nicht in neueren Compilern enthalten ist).

Das bedeutet: "Öffnen Sie die Datei nur, wenn sie bereits existiert. "Das heißt, erstellen Sie die Datei nicht, wenn sie nicht existiert. (Denken Sie daran, dass ofstream eine Datei erstellt, falls diese noch nicht existiert.) Wenn die Datei nicht existiert, schlägt das Öffnen fehl, und wenn Sie einen Aufruf fehlschlagen, erhalten Sie eine echte zurück.

Das ios:: nocreate-Flag ist praktisch für ios:: app. Zusammen bedeuten diese eine vorhandene Datei öffnen und an diese anhängen . Das heißt, die beiden zusammen funktionieren nur, wenn die Datei bereits existiert und der Aufruf die Datei für eine Append-Operation öffnet. Wenn die Datei noch nicht existiert, wird die Datei nicht erstellt. Hier ein Beispielaufruf:

ofstream outfile ("… / MeineDatei. Txt", ios:: app | ios:: nocreate); if (outfile. fail ()) {cout << "konnte die Datei nicht öffnen!" << endl; return 0;} outfile << "hi" << endl; Ausgangsdatei. schließen();

Wenn MeineDatei. txt existiert nicht, wenn Sie diesen Code ausführen, erhalten Sie die Meldung Konnte die Datei nicht öffnen! Aber wenn MyFile. txt existiert, die Anwendung öffnet sie, hängt die Zeichenfolge Hi an und schließt sie schließlich.

Es stellt sich heraus, dass das Nocreate-Flag in der neuen Standard Library nicht verfügbar ist. Schade. Daher funktioniert der Code nur, wenn Sie eine frühere Version der Bibliothek verwenden. Wenn Sie den Compiler Code:: Blocks verwenden, wird folgende Fehlermeldung Ihnen angezeigt:

Fehler: 'nocreate' ist kein Mitglied von '; std:: ios '

Sie sollten jedoch testen, ob Ihr spezieller Compiler eine Bibliothek enthält, die ios:: nocreate unterstützt.Ihr Compiler kann es trotzdem unterstützen, selbst wenn es die neue Standardbibliothek enthält. Als Alternative zu ios:: nocreate können Sie den folgenden Code verwenden (zu finden im Beispiel FileOutput02):

ifstream infile ("… / MyFile. Txt"); if (infile. fail ()) {cout << "konnte die Datei nicht öffnen!" << endl; return 0;} infile. schließen(); ofstream outfile ("… / MeineDatei. txt", ios:: app); outfile << "Hallo" << Ende; Ausgangsdatei. schließen();

In diesem Fall beginnen Sie mit dem Versuch, die Datei zum Lesen zu öffnen. Wenn die Datei nicht existiert, können Sie nicht lesen und der Code wird mit einer Fehlermeldung beendet. Wenn der Code aus der Datei lesen kann, wird die Datei zum Schreiben erneut geöffnet. Das ist eine umständliche Problemumgehung, aber es funktioniert.

Es folgt eine Liste der verfügbaren Flags. Erstens, hier sind die für ios, für den Fall, dass Sie einen Compiler verwenden, der nicht vollständig ANSI-kompatibel ist:

  • ios:: app: Dieses Flag bedeutet, dass Sie eine Datei öffnen und an diese anhängen möchten.

  • ios:: in: Schließen Sie dieses Flag ein, wenn Sie aus einer Datei lesen möchten.

  • ios:: out : Fügen Sie dieses Flag ein, wenn Sie in eine Datei schreiben möchten.

  • ios:: trunc : Fügen Sie dieses Flag ein, wenn Sie den Inhalt der Datei vor dem Schreiben löschen wollen. Es ist das Gegenteil von append, und es ist auch die Standardeinstellung, wenn Sie ios:: app nicht speziell einschließen.

  • ios:: nocreate : Verwenden Sie dieses Flag, wenn Sie sicherstellen möchten, dass die Datei nicht erstellt wird, wenn sie nicht existiert, was dazu führt, dass die Datei nicht geöffnet wird.

  • ios:: noreplace : Dieses Flag ist das Gegenteil von nocreate. Verwenden Sie dieses Flag, wenn Sie nur eine neue Datei erstellen möchten. Wenn Sie dieses Flag verwenden und die Datei bereits vorhanden ist, wird die Datei nicht geöffnet, und dieser Fehler wird true zurückgeben.

ANSI-kompatible Compiler unterstützen das Flag ios:: noreplace nicht. In diesem Fall können Sie das Gegenteil des Fixes für das ios: nocreate -Flag verwenden, wie hier gezeigt (und im FileOutput03-Beispiel gefunden):

ifstream infile ("… / MyFile. Txt"); if (! infile. fail ()) {cout << "Die Datei existiert bereits!" << endl; return 0;} infile. schließen(); ofstream outfile ("… / MeineDatei. txt"); outfile << "Hallo" << Ende; Ausgangsdatei. schließen();

In diesem Fall versucht der Code, die Datei zum Lesen zu öffnen. Wenn die Datei existiert, zeigt der Code eine Fehlermeldung an und wird beendet. Andernfalls erstellt der Code eine neue Datei und schreibt sie.

Die folgenden Flags sind in einem Compliant verfügbar, der absolut ANSI-konform ist!

  • ios:: ate: Verwenden Sie dieses Flag, um nach dem Öffnen zum Ende der Datei zu wechseln. Normalerweise verwenden Sie dieses Flag, wenn Sie Daten an die Datei anhängen möchten.

  • ios_base:: binary: Verwenden Sie dieses Flag, um anzugeben, dass die Datei, die Sie öffnen, binäre Daten enthält - also Daten, die keine Zeichenfolgen darstellen.

  • ios_base:: in: Geben Sie dieses Flag an, wenn Sie aus einer Datei lesen möchten.

  • ios_base:: out: Fügen Sie dieses Flag hinzu, wenn Sie in eine Datei schreiben möchten.

  • ios_base:: trunc: Fügen Sie dieses Flag ein, wenn Sie den Inhalt einer Datei löschen wollen, bevor Sie sie schreiben.

  • ios_base:: app: Schließen Sie dieses Flag ein, wenn Sie an die Datei anhängen möchten. Es ist das Gegenteil von trunc - das heißt, die Informationen, die sich beim Öffnen bereits in der Datei befinden, bleiben dort.

Warum benötigen Sie eine In-Flag und eine Out-Flag? Es scheint, dass der Computer wissen sollte, ob Sie in eine Datei schreiben oder aus ihr lesen, abhängig davon, ob Sie Stream oder Ifstream verwenden. Die Antwort darauf, warum Sie eine In-Flag und eine Out-Flag haben, ist, dass neben Stream und Ifstream auch andere Klassen verfügbar sind.

Die Compiler, die den ANSI-Standard noch nicht vollständig unterstützen, haben in ihren Bibliotheken eine generische Klasse namens fstream. Die ANSI-kompatiblen Compiler haben in ihren Bibliotheken eine Vorlagenklasse namens basic_filebuf und eine Klasse namens filebuf. Wenn Sie diese Klassen verwenden, können Sie die In- und Out-Flags verwenden.

Markieren der Ios-Flags in C ++ - Dummies

Die Wahl des Herausgebers

Zum Hinzufügen von Arbeitsblättern zu Ihrer Excel 2013-Arbeitsmappe - dummies

Zum Hinzufügen von Arbeitsblättern zu Ihrer Excel 2013-Arbeitsmappe - dummies

Jede leere Arbeitsmappe, die Sie öffnen, enthält ein Einzelblatt mit dem prosaischen Namen Sheet1. Um weitere Blätter zu Ihrer Arbeitsmappe in Excel 2013 hinzuzufügen, klicken Sie einfach auf die Schaltfläche Neues Blatt in der Statusleiste (die mit Pluszeichen in einem Kreis). Jedes Arbeitsblatt, das Sie mit der Befehlsschaltfläche Neues Blatt hinzufügen, ist ...

Wie man bedingte Formatierung in Excel 2010 anwendet - dummies

Wie man bedingte Formatierung in Excel 2010 anwendet - dummies

Mit der bedingten Formatierung von excel 2010 können Sie das Aussehen von eine Zelle basierend auf ihrem Wert oder dem Wert einer anderen Zelle. Sie geben bestimmte Bedingungen an, und wenn diese Bedingungen erfüllt sind, wendet Excel die Formatierung an, die Sie auswählen. Sie können die bedingte Formatierung verwenden, um Datumsangaben zu suchen, die bestimmte Kriterien erfüllen (z. B. fallen auf ...

Die Wahl des Herausgebers

ASVAB Vorbereitung: Wie man Brüche multipliziert und dividiert - Dummies

ASVAB Vorbereitung: Wie man Brüche multipliziert und dividiert - Dummies

Es wird erwartet, dass festes Verständnis des mathematischen Grundwissens, wenn Sie das ASVAB nehmen. Multiplizieren und Dividieren von Brüchen sind zwei der Dinge, die Sie wissen müssen. Fraktionen multiplizieren Fraktionen multiplizieren ist sehr einfach. Alles, was Sie tun müssen, ist, die Zähler untereinander zu multiplizieren und die Nenner mit ... zu multiplizieren.

ASVAB-Praxis: Beispiel-Fragen zu Word-Kenntnissen - Dummies

ASVAB-Praxis: Beispiel-Fragen zu Word-Kenntnissen - Dummies

Sie müssen für die Word-Wissensprobleme bereit sein auf dem ASVAB. Das Format, das Sie unten sehen, ist ein gutes Beispiel dafür, was Sie finden werden, wenn Sie das ASVAB benutzen. Beispielfragen Wortwissenszeit: 11 Minuten für 35 Fragen Anleitung: Der Wortwissensubtest ist der dritte Untertest ...

ASVAB: Paragraph Comprehension Subtest Beispiel Testfragen - Dummies

ASVAB: Paragraph Comprehension Subtest Beispiel Testfragen - Dummies

Zeit für Sie, all Ihre ASVAB Vorbereitung zur guten Verwendung. Fragen Sie sich anhand der folgenden Beispieltestfragen, ob Ihr Leseverständnis auf dem neuesten Stand ist. Lesen Sie jeden kurzen Absatz, dem eine oder mehrere Fragen zu den in dieser Passage enthaltenen Informationen folgen. Achten Sie darauf, den Absatz sorgfältig zu lesen ...

Die Wahl des Herausgebers

Zoomen und Schwenken in AutoCAD - Dummys

Zoomen und Schwenken in AutoCAD - Dummys

AutoCAD erleichtert das Schwenken, indem es Bildlaufleisten und Echtzeit-Schwenken bietet. Beim Echtzeit-Panning (im Gegensatz zum Vorgabezeit-Panning?) Können Sie Objekte auf dem Bildschirm sehen, wenn Sie die Maus nach oben und unten oder vor und zurück bewegen. Natürlich bewegt sich der Standpunkt, nicht die Objekte. Sowohl das Schwenken als auch das Zoomen ändern die Ansicht ...

Mit AutoCAD LT 2005 DesignCenter - Dummies

Mit AutoCAD LT 2005 DesignCenter - Dummies

DesignCenter ist ein dummer Name für eine nützliche, wenn auch etwas ausgelastete Palette. Die DesignCenter-Palette ist praktisch für das Extrahieren von Daten aus allen Arten von Zeichnungen. Während sich die Eigenschaftenpalette mit Objekteigenschaften beschäftigt, behandelt die DesignCenter-Palette hauptsächlich benannte Objekte: Ebenen, Linientypen, Blockdefinitionen (dh Symboldefinitionen), Textstile und andere Organisationsobjekte ...

Was Sie über AutoCAD-Koordinatensysteme wissen sollten - Dummies

Was Sie über AutoCAD-Koordinatensysteme wissen sollten - Dummies

Jeder Punkt in einer AutoCAD-Zeichnungsdatei kann identifiziert werden durch seine X-, Y-, Z-Koordinaten. (In den meisten 2D-Zeichnungen ist der Z-Koordinatenwert 0. 0.) Dieses Koordinatensystem wird in AutoCAD als Weltkoordinatensystem oder WCS bezeichnet. Koordinateneingabe Die direkteste Methode, um Punkte präzise einzugeben, ist die Eingabe von Zahlen mit dem ...