Namensräume
Varianten
Aktionen

std::basic_stringbuf<CharT,Traits,Allocator>::init_buf_ptrs

Von cppreference.com
< cpp‎ | io‎ | basic stringbuf
 
 
 
 
void init_buf_ptrs();
(nur Exposition*)

Initialisiert die Eingabe- und Ausgabesequenzen aus buf gemäß mode. buf und mode sind nur zur Exposition bestimmte Datenmember von *this.

Unmittelbar nach Rückkehr dieser Funktion

  • Wenn std::ios_base::out in mode gesetzt ist, zeigt pbase() auf buf.front() und epptr() >= pbase() + buf.size() ist true;
    • zusätzlich, wenn std::ios_base::ate in mode gesetzt ist, ist pptr() == pbase() + buf.size() true,
    • andernfalls ist pptr() == pbase() true.
  • Wenn std::ios_base::in in mode gesetzt ist, zeigt eback() auf buf.front(), und gptr() == eback() && egptr() == eback() + buf.size() ist true.

[bearbeiten] Anmerkungen

Aus Effizienzgründen können Stream-Buffer-Operationen Invarianten von buf verletzen, während es von std::basic_stringbuf umschlossen ist, z.B. durch Schreiben in Zeichen im Bereich [buf.data() + buf.size()buf.data() + buf.capacity()).

Alle Operationen, die einen std::basic_string aus buf abrufen, stellen sicher, dass die Invarianten von std::basic_string für den zurückgegebenen Wert gelten.

[bearbeiten] 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 1448 C++98 Aufruf von init_buf_ptrs() hat dazu geführt, dass
pptr() == pbase() + buf.data()
für Streams, die sowohl Eingabe- als auch Ausgabestreams sind
ergibt
pptr() == pbase() + buf.size()
für Append-Streams