Ausgabedatei-Stream-Memberfunktionen

Ausgabestream Memberfunktionen haben drei Typen: Die, die an Manipulatoren äquivalent sind, die die unformatierte Schreibvorgänge ausführen und die, die andernfalls den Stream Zustand ändern und keinen entsprechenden Operator zum Einfügen oder Manipulators.Eine sequenzielle, formatierte Ausgabe haben Sie möglicherweise nur manipulatoren und - Operatoren einfügen.Eine direkte binäre Ausgaben Datenträger verwenden Sie andere Memberfunktion mit oder ohne Operatoren einfügen.

Die geöffnete Funktion für die Ausgabedatenströme

Um einen Ausgabedatei datenstrom (ofstream) zu verwenden, müssen Sie diesen Datenstrom mit einer bestimmten Datei auf einem Datenträger im Konstruktor oder in der open-Funktion zuordnen.Wenn Sie die open-Funktion verwenden, können Sie das gleiche Streamobjekt mit einer Reihe von Dateien wiederverwenden.In beiden Fällen sind die Argumente, zu der die Datei beschreiben, gleich.

Wenn Sie die Datei öffnen, die mit einem Ausgabedatenstrom zugeordnet ist, geben Sie im Allgemeinen ein open_mode-Flag an.Sie können diese Flags kombinieren, die als Enumeratoren in der ios-Klasse mit dem bitweisen OR (definierten | Operator.)Weitere Informationen finden Sie unter ios_base::openmode für eine Liste von Enumeratoren.

Drei allgemeine Ausgabestream situationen Modus sind Optionen:

  • Eine Datei erstellen.Wenn die Datei bereits vorhanden ist, wird die alte Version gelöscht.

    ostream ofile( "FILENAME" );  // Default is ios::out
    ofstream ofile( "FILENAME", ios::out ); // Equivalent to above
    
  • Datensätze an eine vorhandene Datei oder zum Erstellen eines anfügen, wenn sie nicht vorhanden ist.

    ofstream ofile( "FILENAME", ios::app );
    
  • Zwei Dateien einzeln auf demselben Datenstream öffnen.

    ofstream ofile();
    ofile.open( "FILE1", ios::in );
    // Do some output
    ofile.close(); // FILE1 closed
    ofile.open( "FILE2", ios::in );
    // Do some more output
    ofile.close(); // FILE2 closed
    // When ofile goes out of scope it is destroyed.
    

Die put Funktion

Die Funktion put ein Zeichen in den Ausgabestream.In den beiden folgenden Anweisungen sind dieselben, standardmäßig aber die zweite Format ist für die Argumente des Streams betroffen:

cout.put( 'A' ); // Exactly one character written
cout << 'A'; // Format arguments 'width' and 'fill' apply 

Die geschriebene Funktion

Die Funktion Schreiben einen Speicherblock zu einem Ausgabedatei datenstrom.Das Längen - Argument gibt die Anzahl der geschriebenen Bytes an.In diesem Beispiel wird eine Ausgabedatei erstellt datenstrom und schreibt den Binärwert der Date Struktur darauf:

// write_function.cpp
// compile with: /EHsc
#include <fstream>
using namespace std;

struct Date
{
   int mo, da, yr;
};

int main( )
{
   Date dt = { 6, 10, 92 };
   ofstream tfile( "date.dat" , ios::binary );
   tfile.write( (char *) &dt, sizeof dt );
}

Die Schreiben-Funktion wird nicht auf, wenn sie ein NULL-Zeichen erreicht, daher wird die vollständige Klassenstruktur geschrieben.Die Funktion akzeptiert zwei Argumente: char ein Zeiger und eine Anzahl zu schreibende Zeichen.Beachten Sie die erforderliche Umwandlung in char* vor der Adresse des Struktur Objekts.

Die seekp und tellp Funktionen

Ein Ausgabedatei datenstrom enthält einen internen Zeiger, der auf die Position, verweist, in der Daten als Nächstes geschrieben werden soll.Die seekp-Memberfunktion legt diesen Zeiger fest und stellt daher die direkte Datenträgerdatei die Ausgabe.Die tellp-Memberfunktion gibt die Dateiposition zurück.Beispiele, in denen die entsprechungen Eingabestream zu seekp und tellpfinden Sie unter Die seekg und tellg Funktionen.

Die Funktion für die Ausgabedatenströme Nähe

Die Schließen-Memberfunktion enthält die Datenträgerdatei, die mit einem Ausgabedatei datenstrom zugeordnet ist.Die Datei muss geschlossen werden, um alle Datenträger Ausgabe abzuschließen.Falls erforderlich, wird der Destruktor ofstream die Datei für Sie Schließen , aber Sie können die Funktion verwenden, wenn Sie eine andere Datei für das gleiche Streamobjekt öffnen müssen.

Der Ausgabestream destruktor eines Streams schließt automatisch die Datei nur, wenn der Konstruktor oder die open-Memberfunktion die Datei geöffnet haben.Wenn Sie den Konstruktor ein Dateideskriptor für eine OPEN-Datei Bereits übergeben oder die Anfügen-Memberfunktion verwenden, müssen Sie die Datei explizit schließen.

Fehler beim Verarbeiten von Funktionen

Mit dieser Memberfunktionen, um auf Fehler beim Schreiben in einen Stream zu testen:

Funktion

Rückgabewert

Schlechtes

Gibt true zurück, wenn ein nicht behebbarer Fehler auftritt.

Fehler

Gibt true zurück, wenn ein nicht behebbarer Fehler eine erwartete „oder“ Bedingung, wie ein Konvertierung gibt Fehler- oder wenn die Datei nicht gefunden wird.Die Verarbeitung kann nach einem Aufruf von clear mit einem Argument (null) häufig fortsetzen.

Qualität

Gibt true zurück, wenn es keinen Fehlerzustand (nicht behebbaren oder andernfalls) gibt und das Dateiende flag ist nicht festgelegt.

EOF

Gibt true auf der Dateiende-Bedingung zurück.

clear

Legt den Zustand des internen Fehlers ab.Wenn diese mit den Standardargumenten aufgerufen wird, löscht sie alle Fehler Bits.

rdstate

Gibt den aktuellen Fehlerstatus zurück.

Der!-Operator ist überladen, um die gleiche Aufgabe wie die fail-Funktion auszuführen.Wenn der Ausdruck:

if( !cout)...

identisch mit folgendem Ausdruck:

if( cout.fail() )...

Der void* ()-Operator ist überladen, um das Gegenteil des Operators!-zu sein. Daher der Begriff:

if( cout)...

entspricht:

if( !cout.fail() )...

Der void* ()-Operator ist nicht für Qualität äquivalent, denn es nicht für das Dateiende testet.

Siehe auch

Referenz

Ausgabestreams