std::basic_filebuf<CharT,Traits>:close
| 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
| Dieser Abschnitt ist unvollständig Grund: kein 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) | |
| [virtuell] |
destruiert ein basic_filebuf Objekt und schließt die Datei, falls sie geöffnet ist(virtual public member function) |