std::strstreambuf:: overflow
From es.cppreference.net
<
cpp
|
io
|
strstreambuf
|
protected
:
virtual int_type overflow ( int_type c = EOF ) ; |
(obsoleto en C++98)
(eliminado en C++26) |
|
Añade el carácter c al área de escritura del búfer, reasignando si es posible.
1)
Si
c
==
EOF
, no hace nada.
2)
De lo contrario, si el área de escritura tiene una posición disponible (
pptr
(
)
<
epptr
(
)
), almacena el carácter como si fuera mediante
*
pptr
(
)
++
=
c
.
3)
De lo contrario, si el modo del búfer de flujo no es dinámico o el búfer de flujo está actualmente congelado, la función falla y retorna
EOF
.
4)
De lo contrario, la función reasigna (o asigna inicialmente) un arreglo dinámico lo suficientemente grande para contener los contenidos del arreglo dinámico actual (si existe) más al menos una posición de escritura adicional. Si se utilizó un puntero a la función de asignación
palloc
en el constructor, esa función se llama con
(
*
palloc
)
(
n
)
donde
n
es el número de bytes a asignar, de lo contrario se utiliza
new
char
[
n
]
. Si se utilizó un puntero a la función de desasignación
pfree
en el constructor, esa función se llama con
(
*
pfree
)
(
p
)
para desasignar el arreglo anterior, si es necesario, de lo contrario se utiliza
delete
[
]
p
. Si la asignación falla, la función falla y retorna
EOF
.
Contenidos |
Parámetros
| c | - | el carácter a almacenar en el área de put |
Valor de retorno
Si c == EOF , retorna algún valor diferente de EOF . De lo contrario, retorna ( unsigned char ) ( c ) en caso de éxito, EOF en caso de fallo.
Ejemplo
Ejecutar este código
#include <iostream> #include <strstream> struct mybuf : std::strstreambuf { int_type overflow(int_type c) { std::cout << "Before overflow(): size of the put area is " << epptr()-pbase() << " with " << epptr()-pptr() << " write positions available\n"; int_type rc = std::strstreambuf::overflow(c); std::cout << "After overflow(): size of the put area is " << epptr()-pbase() << " with " << epptr()-pptr() << " write positions available\n"; return rc; } }; int main() { mybuf sbuf; // read-write dynamic strstreambuf std::iostream stream(&sbuf); stream << "Sufficiently long string to overflow the initial allocation, at least " << " on some systems."; }
Salida posible:
Before overflow(): size of the put area is 16 with 0 write positions available After overflow(): size of the put area is 32 with 15 write positions available Before overflow(): size of the put area is 32 with 0 write positions available After overflow(): size of the put area is 64 with 31 write positions available Before overflow(): size of the put area is 64 with 0 write positions available After overflow(): size of the put area is 128 with 63 write positions available
Véase también
|
[virtual]
|
escribe caracteres a la secuencia de salida asociada desde el área de escritura
(función miembro protegida virtual de
std::basic_streambuf<CharT,Traits>
)
|
|
[virtual]
|
añade un carácter a la secuencia de salida
(función miembro protegida virtual de
std::basic_stringbuf<CharT,Traits,Allocator>
)
|
|
[virtual]
|
escribe caracteres al archivo asociado desde el área de escritura
(función miembro protegida virtual de
std::basic_filebuf<CharT,Traits>
)
|
|
escribe un carácter al área de escritura y avanza el siguiente puntero
(función miembro pública de
std::basic_streambuf<CharT,Traits>
)
|
|
|
inserta un carácter
(función miembro pública de
std::basic_ostream<CharT,Traits>
)
|