Namespaces
Variants

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

From cppreference.net
protected :
void setp ( char_type * pbeg, char_type * pend ) ;
**Примечание:** В данном фрагменте кода отсутствует текст для перевода, так как весь контент состоит из: - HTML тегов и атрибутов (не подлежат переводу) - C++ кода внутри тегов ` ` (не подлежит переводу согласно правилам) - Ключевых слов C++: `protected`, `void`, `setp`, `char_type` (не переводятся) Если бы в таблице присутствовал обычный текст вне тегов кода, он был бы переведен на русский язык.

Устанавливает значения указателей, определяющих область вывода.

После вызова pbase ( ) == pbeg , pptr ( ) == pbeg и epptr ( ) == pend все имеют значение true .

Если любой из [ pbeg , pend ) не является корректным диапазоном , поведение не определено.

Содержание

Параметры

pbeg - указатель на новое начало области вывода
pend - указатель на новый конец области вывода

Пример

#include <array>
#include <cstddef>
#include <iostream>
// Буфер для std::ostream, реализованный с помощью 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()
    {
        // указатели области вывода для работы с "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{}; // инициализация значением "buffer"
};
int main()
{
    ArrayedStreamBuffer<10> streambuf;
    std::ostream stream(&streambuf);
    stream << "hello";
    stream << ",";
    streambuf.print_buffer();
}

Вывод:

h e l l o , \0 \0 \0 \0

Отчеты о дефектах

Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применяется к Поведение в опубликованной версии Корректное поведение
LWG 4023 C++98 setp не требовал, чтобы выходная последовательность была допустимым диапазоном требует

Смотрите также

переставляет указатели начала, следующего и конца входной последовательности
(защищённая функция-член)