Namespaces
Variants

std::basic_streambuf<CharT,Traits>:: setp

From cppreference.net
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)