std::basic_streambuf<CharT,Traits>:: setp
|
protected
:
void setp ( char_type * pbeg, char_type * pend ) ; |
||
Устанавливает значения указателей, определяющих область вывода.
После вызова 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
не требовал, чтобы выходная последовательность была допустимым диапазоном
|
требует |
Смотрите также
|
переставляет указатели начала, следующего и конца входной последовательности
(защищённая функция-член) |