std::basic_streambuf<CharT,Traits>:: setp
|
protected
:
void setp ( char_type * pbeg, char_type * pend ) ; |
||
Setzt die Werte der Zeiger, die den Ausgabebereich definieren.
Nach dem Aufruf sind pbase ( ) == pbeg , pptr ( ) == pbeg und epptr ( ) == pend alle true .
Wenn einer der
[
pbeg
,
pend
)
kein
gültiger Bereich
ist, ist das Verhalten undefiniert.
Inhaltsverzeichnis |
Parameter
| pbeg | - | Zeiger auf den neuen Anfang des Put-Bereichs |
| pend | - | Zeiger auf das neue Ende des Put-Bereichs |
Beispiel
#include <array> #include <cstddef> #include <iostream> // Buffer für std::ostream implementiert durch std::array template<std::size_t size, class CharT = char> struct ArrayedStreamBuffer : std::basic_streambuf<CharT> { using Base = std::basic_streambuf<CharT>; using char_type = typename Base::char_type; ArrayedStreamBuffer() { // Put-Bereich-Zeiger zur Arbeit mit "buffer" setzen Base::setp(buffer.data(), buffer.data() + size); } void print_buffer() { for (char_type i : buffer) { if (i == 0) std::cout << "\\0"; else std::cout << i; std::cout << ' '; } std::cout << '\n'; } private: std::array<char_type, size> buffer{}; // "buffer" wertinitialisieren }; int main() { ArrayedStreamBuffer<10> streambuf; std::ostream stream(&streambuf); stream << "hello"; stream << ","; streambuf.print_buffer(); }
Ausgabe:
h e l l o , \0 \0 \0 \0
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 4023 | C++98 |
setp
forderte nicht, dass die Ausgabesequenz ein gültiger Bereich sein muss
|
erfordert |
Siehe auch
|
positioniert die Anfangs-, Nächste- und End-Zeiger der Eingabesequenz neu
(geschützte Elementfunktion) |