std:: basic_syncbuf
|
Definido en el encabezado
<syncstream>
|
||
|
template
<
class
CharT,
|
(desde C++20) | |
std::basic_syncbuf
es un contenedor para un
std::basic_streambuf
(proporcionado en el momento de la construcción como un puntero). Acumula la salida en su propio búfer interno y transmite atómicamente todo su contenido al búfer encapsulado en la destrucción y cuando se solicita explícitamente, de modo que aparezcan como una secuencia contigua de caracteres. Garantiza que no haya carreras de datos ni intercalación de caracteres enviados al búfer encapsulado siempre que todas las demás salidas realizadas al mismo búfer se realicen a través de, posiblemente diferentes, instancias de
std::basic_syncbuf
.
Implementación típica de
std::basic_syncbuf
mantiene un puntero al
std::basic_streambuf
encapsulado, un indicador booleano que muestra si el buffer transmitirá su contenido al buffer encapsulado en sync (flush), un indicador booleano que muestra un flush pendiente cuando la política es no emitir en sync, un buffer interno que utiliza
Allocator
(como
std::string
), y un puntero a un mutex utilizado para sincronizar la emisión entre múltiples hilos que acceden al mismo buffer de flujo encapsulado (estos mutexes pueden estar en una tabla hash con punteros a objetos
std::basic_streambuf
utilizados como claves).
Como otras clases de streambuf,
std::basic_syncbuf
normalmente solo se accede a través del stream correspondiente,
std::osyncstream
, no directamente.
Se proporcionan varios typedefs para tipos de caracteres comunes:
|
Definido en el encabezado
<syncstream>
|
|
| Tipo | Definición |
std::syncbuf
|
std :: basic_syncbuf < char > |
std::wsyncbuf
|
std :: basic_syncbuf < wchar_t > |
Contenidos |
Tipos de miembros
| Tipo de miembro | Definición |
char_type
|
CharT
|
traits_type
|
Traits
; el programa está mal formado si
Traits::char_type
no es
CharT
.
|
int_type
|
Traits::int_type
|
pos_type
|
Traits::pos_type
|
off_type
|
Traits::off_type
|
allocator_type
|
Allocator
|
streambuf_type
|
std:: basic_streambuf < CharT, Traits > |
Funciones miembro
Funciones miembro públicas |
|
construye un objeto
basic_syncbuf
(función miembro pública) |
|
asigna un objeto
basic_syncbuf
(función miembro pública) |
|
intercambia dos objetos
basic_syncbuf
(función miembro pública) |
|
destruye el
basic_syncbuf
y emite su buffer interno
(función miembro pública) |
|
|
transmite atómicamente todo el buffer interno al streambuf envuelto
(función miembro pública) |
|
|
recupera el puntero al streambuf envuelto
(función miembro pública) |
|
recupera el allocator utilizado por este
basic_syncbuf
(función miembro pública) |
|
|
cambia la política actual de emit-on-sync
(función miembro pública) |
|
Funciones miembro protegidas |
|
|
emite o registra un flush pendiente, dependiendo de la política actual de emit-on-sync
(función miembro pública) |
|
Funciones no miembro
|
(C++20)
|
especializa el algoritmo
std::swap
(plantilla de función) |
Heredado de std:: basic_streambuf
Tipos de miembros
| Tipo de miembro | Definición |
char_type
|
CharT
|
traits_type
|
Traits
; el programa está mal formado si
Traits::char_type
no es
CharT
.
|
int_type
|
Traits::int_type
|
pos_type
|
Traits::pos_type
|
off_type
|
Traits::off_type
|
Funciones miembro
|
[virtual]
|
destruye el objeto
basic_streambuf
(función miembro pública virtual de
std::basic_streambuf<CharT,Traits>
)
|
Locales |
|
|
cambia la configuración regional asociada e invoca
imbue
(
)
(función miembro pública de
std::basic_streambuf<CharT,Traits>
)
|
|
|
obtiene una copia de la configuración regional asociada
(función miembro pública de
std::basic_streambuf<CharT,Traits>
)
|
|
Posicionamiento |
|
|
invoca
setbuf
(
)
(función miembro pública de
std::basic_streambuf<CharT,Traits>
)
|
|
|
invoca
seekoff
(
)
(función miembro pública de
std::basic_streambuf<CharT,Traits>
)
|
|
|
invoca
seekpos
(
)
(función miembro pública de
std::basic_streambuf<CharT,Traits>
)
|
|
|
invoca
sync
(
)
(función miembro pública de
std::basic_streambuf<CharT,Traits>
)
|
|
Área de obtención |
|
|
obtiene el número de caracteres inmediatamente disponibles en el área de obtención
(función miembro pública de
std::basic_streambuf<CharT,Traits>
)
|
|
|
avanza la secuencia de entrada, luego lee un carácter sin avanzar nuevamente
(función miembro pública de
std::basic_streambuf<CharT,Traits>
)
|
|
|
(eliminado en C++17)
|
lee un carácter de la secuencia de entrada y avanza la secuencia
(función miembro pública de
std::basic_streambuf<CharT,Traits>
)
|
|
lee un carácter de la secuencia de entrada sin avanzar la secuencia
(función miembro pública de
std::basic_streambuf<CharT,Traits>
)
|
|
|
invoca
xsgetn
(
)
(función miembro pública de
std::basic_streambuf<CharT,Traits>
)
|
|
Área de escritura |
|
|
escribe un carácter en el área de escritura y avanza el siguiente puntero
(función miembro pública de
std::basic_streambuf<CharT,Traits>
)
|
|
|
invoca
xsputn
(
)
(función miembro pública de
std::basic_streambuf<CharT,Traits>
)
|
|
Reinserción |
|
|
devuelve un carácter a la secuencia de entrada
(función miembro pública de
std::basic_streambuf<CharT,Traits>
)
|
|
|
mueve el siguiente puntero en la secuencia de entrada hacia atrás una posición
(función miembro pública de
std::basic_streambuf<CharT,Traits>
)
|
|
Funciones miembro protegidas
construye un objeto
basic_streambuf
(función miembro protegida) |
|
|
(C++11)
|
reemplaza un
basic_streambuf
object
(función miembro protegida) |
|
(C++11)
|
intercambia dos objetos
basic_streambuf
(función miembro protegida) |
Configuraciones Regionales |
|
|
[virtual]
|
reacciona a un cambio de la configuración regional asociada
(función miembro protegida virtual de
std::basic_streambuf<CharT,Traits>
)
|
Posicionamiento |
|
|
[virtual]
|
reemplaza el búfer con un arreglo definido por el usuario, si está permitido
(función miembro protegida virtual de
std::basic_streambuf<CharT,Traits>
)
|
|
[virtual]
|
reposiciona el siguiente puntero en la secuencia de entrada, secuencia de salida, o ambas, usando direccionamiento relativo
(función miembro protegida virtual de
std::basic_streambuf<CharT,Traits>
)
|
|
[virtual]
|
reposiciona el siguiente puntero en la secuencia de entrada, secuencia de salida, o ambas usando direccionamiento absoluto
(función miembro protegida virtual de
std::basic_streambuf<CharT,Traits>
)
|
|
[virtual]
|
sincroniza los búferes con la secuencia de caracteres asociada
(función miembro protegida virtual de
std::basic_streambuf<CharT,Traits>
)
|
Obtener área |
|
|
[virtual]
|
obtiene el número de caracteres disponibles para entrada en la secuencia de entrada asociada, si se conoce
(función miembro protegida virtual de
std::basic_streambuf<CharT,Traits>
)
|
|
[virtual]
|
lee caracteres de la secuencia de entrada asociada al área de obtención
(función miembro protegida virtual de
std::basic_streambuf<CharT,Traits>
)
|
|
[virtual]
|
lee caracteres de la secuencia de entrada asociada al área de obtención y avanza el siguiente puntero
(función miembro protegida virtual de
std::basic_streambuf<CharT,Traits>
)
|
|
[virtual]
|
lee múltiples caracteres de la secuencia de entrada
(función miembro protegida virtual de
std::basic_streambuf<CharT,Traits>
)
|
|
devuelve un puntero al inicio, carácter actual y el final del área de obtención
(función miembro protegida) |
|
|
avanza el siguiente puntero en la secuencia de entrada
(función miembro protegida) |
|
|
reposiciona los punteros de inicio, siguiente y fin de la secuencia de entrada
(función miembro protegida) |
|
Área de put |
|
|
[virtual]
|
escribe múltiples caracteres en la secuencia de salida
(función miembro protegida virtual de
std::basic_streambuf<CharT,Traits>
)
|
|
[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>
)
|
|
devuelve un puntero al inicio, al carácter actual y al final del área de escritura
(función miembro protegida) |
|
|
avanza el puntero siguiente de la secuencia de salida
(función miembro protegida) |
|
|
reposiciona los punteros de inicio, siguiente y fin de la secuencia de salida
(función miembro protegida) |
|
Putback |
|
|
[virtual]
|
coloca un carácter de vuelta en la secuencia de entrada, posiblemente modificando la secuencia de entrada
(función miembro protegida virtual de
std::basic_streambuf<CharT,Traits>
)
|
Notas
| Macro de prueba de características | Valor | Std | Característica |
|---|---|---|---|
__cpp_lib_syncbuf
|
201803L
|
(C++20) |
Flujo de salida con búfer sincronizado (
std::syncbuf
,
std::osyncstream
) y manipuladores
|