Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 aboveDatensä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 |
|---|---|
Gibt true zurück, wenn ein nicht behebbarer Fehler auftritt. |
|
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. |
|
Gibt true zurück, wenn es keinen Fehlerzustand (nicht behebbaren oder andernfalls) gibt und das Dateiende flag ist nicht festgelegt. |
|
Gibt true auf der Dateiende-Bedingung zurück. |
|
Legt den Zustand des internen Fehlers ab.Wenn diese mit den Standardargumenten aufgerufen wird, löscht sie alle Fehler Bits. |
|
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.