Namensräume
Varianten
Aktionen

std::basic_filebuf<CharT,Traits>::overflow

Von cppreference.com
< cpp‎ | io‎ | basic filebuf
 
 
 
 
protected:
virtual int_type overflow( int_type ch = Traits::eof() );

Schreibt Daten aus dem Ausgabebereich in die zugehörige Zeichensequenz (in die Datei).

Verhält sich wie die Basisklassenversion std::basic_streambuf::overflow(), mit der Ausnahme, dass das Verhalten des „Verbrauchens von Zeichen“ wie folgt definiert ist:

1) Verwendet zuerst std::codecvt::out der eingebetteten Locale, um die Zeichen in eine externe (möglicherweise Multibyte-)Darstellung zu konvertieren, die in einem temporären Puffer gespeichert wird, wie folgt: (XSIZE ist eine nicht spezifizierte Puffergröße)
const std::codecvt<CharT, char, typename Traits::state_type>& a_codecvt =
    std::use_facet<std::codecvt<CharT, char, typename Traits::state_type>>(getloc());
typename Traits::state_type state;
CharT* end;
char xbuf[XSIZE];
char* xbuf_end;
std::codecvt_base::result r =
    a_codecvt.out(state, pbase(), pptr(), end, xbuf, xbuf + XSIZE, xbuf_end);
2) Schreibt dann alle vollständig konvertierten Zeichen aus dem Puffer in die Datei. Formal werden die folgenden Schritte basierend auf dem Wert von r durchgeführt
r Operation
std::codecvt_base::ok Gibt die Zeichen in [xbufxbuf_end) in die Datei aus und schlägt fehl, wenn die Ausgabe fehlschlägt. An dieser Stelle, wenn pbase() != pptr() und pbase() == end beide true sind (was bedeutet, dass XSIZE nicht groß genug für ein einziges externes Zeichen ist), erhöhe XSIZE und wiederhole von vorne.
std::codecvt_base::partial Gibt die konvertierten externen Zeichen in [xbufxbuf_end) in die Datei aus und wiederholt dies mit den verbleibenden unkonvertierten internen Zeichen in [endpptr()). Wenn die Ausgabe fehlschlägt, schlägt die Funktion fehl (ohne Wiederholung).
std::codecvt_base::noconv Gibt die Zeichen in [pbase()pptr()) in die Datei aus.
std::codecvt_base::error Schlägt fehl.
Wenn die zugehörige Datei nicht geöffnet ist (is_open() gibt false zurück), schlägt die Ausgabe immer fehl.
3) Legt einen beobachtbaren Kontrollpunkt fest.
(seit C++26)

Inhalt

[bearbeiten] Parameter

ch - das zu speichernde Zeichen im Put-Bereich

[bearbeiten] Rückgabewert

Traits::not_eof(ch) um Erfolg anzuzeigen oder Traits::eof() um Fehlschlag anzuzeigen.

[bearbeiten] Hinweise

Wenn a_codecvt.always_noconv() true zurückgibt, kann der Aufruf von a_codecvt.out() übersprungen werden.

[bearbeiten] Beispiel

[bearbeiten] Siehe auch

[virtuell]
schreibt Zeichen aus dem Put-Bereich in die zugeordnete Ausgabesequenz
(virtuelle geschützte Member-Funktion von std::basic_streambuf<CharT,Traits>) [bearbeiten]
[virtuell]
liest aus der zugeordneten Datei
(virtual protected member function) [edit]