Namensräume
Varianten
Aktionen

std::basic_filebuf<CharT,Traits>:close

Von cppreference.com
< cpp‎ | io‎ | basic filebuf
 
 
 
 
std::basic_filebuf<CharT, Traits>* close();

Wenn ein Ausgabebereich existiert (z. B. die Datei zum Schreiben geöffnet wurde), wird zuerst overflow(Traits::eof()) aufgerufen, um alle ausstehenden Ausgaben in die Datei zu schreiben, einschließlich aller Unshift-Sequenzen.

Wenn die zuletzt aufgerufene Funktion aus underflow(), overflow(), seekpos() und seekoff() overflow() war, wird dann std::codecvt::unshift() aufgerufen, möglicherweise mehrmals, um die Unshift-Sequenz gemäß der eingebetteten Locale zu ermitteln und diese Sequenz mit overflow(Traits::eof()) in die Datei zu schreiben.

Dann wird die Datei geschlossen, als ob std::fclose() aufgerufen worden wäre, unabhängig davon, ob einer der vorhergehenden Aufrufe erfolgreich war oder fehlschlug.

Wenn einer der aufgerufenen Funktionsaufrufe, einschließlich des Aufrufs von std::fclose(), fehlschlägt, wird ein Nullzeiger zurückgegeben. Wenn einer der aufgerufenen Funktionsaufrufe eine Ausnahme auslöst, wird die Ausnahme abgefangen und nach dem Schließen der Datei erneut ausgelöst. Wenn die Datei bereits geschlossen ist, wird sofort ein Nullzeiger zurückgegeben.

In jedem Fall wird die private Membervariable aktualisiert, auf die von is_open() zugegriffen wird.

Inhalt

[edit] Parameter

(keine)

[edit] Rückgabewert

this bei Erfolg, ein Nullzeiger bei Fehler.

[edit] Hinweise

close() wird typischerweise über den Destruktor von std::basic_filebuf aufgerufen (der wiederum typischerweise vom Destruktor von std::basic_fstream aufgerufen wird).

[edit] Beispiel

[edit] Fehlerberichte

Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 443 C++98 die Datei wurde mit overflow(EOF) geschrieben wurde zu overflow(Traits::eof()) geändert
LWG 622 C++98 war unklar, wie damit umzugehen ist
eine Ausnahme beim Schließen
sie wird nach dem Schließen der Datei erneut ausgelöst

[edit] Siehe auch

prüft, ob die zugeordnete Datei geöffnet ist
(public member function) [edit]
[virtuell]
destruiert ein basic_filebuf Objekt und schließt die Datei, falls sie geöffnet ist
(virtual public member function) [edit]