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, dasspptr() == pbase() + buf.data() für Streams, die sowohl Eingabe- als auch Ausgabestreams sind |
ergibt pptr() == pbase() + buf.size() für Append-Streams |