std::basic_streambuf<CharT,Traits>:: setp
|
protected
:
void setp ( char_type * pbeg, char_type * pend ) ; |
||
Establece los valores de los punteros que definen el área de escritura.
Después de la llamada, pbase ( ) == pbeg , pptr ( ) == pbeg y epptr ( ) == pend son todos true .
Si cualquiera de
[
pbeg
,
pend
)
no es un
rango válido
, el comportamiento es indefinido.
Contenidos |
Parámetros
| pbeg | - | puntero al nuevo inicio del área de escritura |
| pend | - | puntero al nuevo final del área de escritura |
Ejemplo
#include <array> #include <cstddef> #include <iostream> // Buffer para std::ostream implementado por 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() { // punteros del área de escritura para trabajar con "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{}; // inicializar por valor "buffer" }; int main() { ArrayedStreamBuffer<10> streambuf; std::ostream stream(&streambuf); stream << "hello"; stream << ","; streambuf.print_buffer(); }
Salida:
h e l l o , \0 \0 \0 \0
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 4023 | C++98 |
setp
no requería que la secuencia de salida fuera un rango válido
|
requiere |
Véase también
|
reposiciona los punteros de inicio, siguiente y fin de la secuencia de entrada
(función miembro protegida) |