std::basic_streambuf<CharT,Traits>:: setp
|
protected
:
void setp ( char_type * pbeg, char_type * pend ) ; |
||
Définit les valeurs des pointeurs définissant la zone de sortie.
Après l'appel, pbase ( ) == pbeg , pptr ( ) == pbeg et epptr ( ) == pend sont tous true .
Si l'un des éléments de
[
pbeg
,
pend
)
n'est pas une
plage valide
, le comportement est indéfini.
Table des matières |
Paramètres
| pbeg | - | pointeur vers le nouveau début de la zone de mise |
| pend | - | pointeur vers la nouvelle fin de la zone de mise |
Exemple
#include <array> #include <cstddef> #include <iostream> // Buffer pour std::ostream implémenté par 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() { // pointeurs de zone de sortie pour travailler avec "buffer" 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{}; // initialisation par valeur de "buffer" }; int main() { ArrayedStreamBuffer<10> streambuf; std::ostream stream(&streambuf); stream << "hello"; stream << ","; streambuf.print_buffer(); }
Sortie :
h e l l o , \0 \0 \0 \0
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | S'applique à | Comportement tel que publié | Comportement correct |
|---|---|---|---|
| LWG 4023 | C++98 |
setp
n'exigeait pas que la séquence de sortie soit une plage valide
|
exige |
Voir aussi
|
repositionne les pointeurs de début, suivant et de fin de la séquence d'entrée
(fonction membre protégée) |