std::fpos
Definido en el archivo de encabezado <ios> | ||
template<class State > class fpos; | ||
Las especializaciones de la plantilla de clase std::fpos identifican posiciones absolutas en una secuencia o en un archivo. Cada objeto de tipo fpos
mantiene la posición del byte en la transmisión (generalmente como un miembro privado de tipo std::streamoff) y el estado de cambio actual, un valor de tipo State
(normalmente std::mbstate_t).
Se proporcionan los siguientes nombres typedef para std::fpos<std::mbstate_t> (aunque se escriben de manera diferente en el estándar, denotan el mismo tipo):
Definido en el archivo de encabezado <iosfwd> | |
Tipo | Definición |
streampos | std::fpos<std::char_traits<char>::state_type> |
wstreampos | std::fpos<std::char_traits<wchar_t>::state_type> |
u8streampos (C++20) | std::fpos<std::char_traits<char8_t>::state_type> |
u16streampos (C++11) | std::fpos<std::char_traits<char16_t>::state_type> |
u32streampos (C++11) | std::fpos<std::char_traits<char32_t>::state_type> |
Todas las especializaciones de fpos
cumplen con los requerimientos de DefaultConstructible, CopyConstructible, CopyAssignable, Destructible y EqualityComparable.
Si State
es trivialmente construible por copia, fpos
tiene un constructor de copia trivial.
Si State
es trivialmente asignable por copia, fpos
tiene un operador de asignación de copia trivial.
Si State
es trivialmente destructible, fpos
tiene un destructor trivial.
Contenido |
[editar]Parámetro de plantilla
State | - | El tipo que representa el estado de cambio. |
Requisitos de tipo | ||
-State debe satisfacer los requisitos de Destructible, CopyAssignable, CopyConstructible y DefaultConstructible. |
[editar]Funciones miembro
Obtiene o establece el valor del estado de cambio. (función miembro pública) |
Además, se proporcionan funciones miembro y no miembro para respaldar las siguientes operaciones:
- Un constructor por defecto que almacena un desplazamiento de cero e inicializa por valor el objeto de estado.
- Un constructor no explícito que acepta un argumento de tipo (posiblemente const) std::streamoff, que almacena ese desplazamiento e inicializa por valor el objeto de estado. Este constructor también debe aceptar el valor especial std::streamoff(-1): el objeto
std::fpos
construido de esta manera es devuelto por algunas operaciones de flujo para indicar errores.
- Conversión explícita de (posiblemente const)
fpos
a std::streamoff. El resultado es el desplazamiento almacenado.
- operator== y operator!= que comparan dos objetos de tipo (posiblemente const)
std::fpos
y devuelve un valor de tipo convertible a bool. p != q es equivalente a !(p == q).
- operator+ y operator- tal que, para un objeto
p
de tipo (posiblemente const)fpos<State>
y un objetoo
de tipo (posiblemente const) std::streamoff:
- p + o tiene tipo
fpos<State>
y almacena un desplazamiento que es el resultado de sumaro
al desplazamiento dep
; - o + p tiene un tipo convertible a
fpos<State>
y el resultado de la conversión es igual a p + o; - p - o tiene tipo
fpos<State>
y almacena un desplazamiento que es el resultado de restaro
del desplazamiento dep
.
- p + o tiene tipo
- operator+= y operator-= que pueden aceptar (posiblemente const) std::streamoff y lo suma o resta del desplazamiento almacenado, respectivamente.
- operator- que puede restar dos objetos de tipo (posiblemente const)
std::fpos
produciendo un std::streamoff, tal que para dos de tales objetosp
yq
, p == q +(p - q).
[editar]Notas
Algunas de las funciones miembro de flujos de E/S devuelven y manipulan objetos del typedef miembro pos_type
. Para flujos, estos typedefs miembro son proporcionados por el parámetro de plantilla Traits
, que por defecto es std::char_traits, que define sus pos_type
como especializaciones de std::fpos
. El comportamiento de la biblioteca de flujos de E/S está definido por la implementación cuando Traits::pos_type no es std::fpos<std::mbstate_t> (también conocido como std: :streampos
, std::wstreampos
, etc.).
[editar]Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
---|---|---|---|
LWG 57 | C++98 | Se permitió contradictoriamente que streampos y wstreampos fueran diferentesmientras que se requería que fueran iguales. | se aclaró que eran iguales. |
P0759R1 | C++98 | La especificación no estaba clara y estaba incompleta. | Se limpió. |
P1148R0 | C++11 | No estaba claro qué y en qué encabezado están las definiciones u16streampos y u32streampos . | Se aclaró. |
[editar]Véase también
Representa la posición relativa en el archivo o flujo (desplazamiento desde fpos , suficiente para representar cualquier tamaño de archivo. (typedef) | |
Devuelve el indicador de la posición de salida. (función miembro pública de std::basic_ostream<CharT,Traits> ) | |
Establece el indicador de la posición de salida. (función miembro pública de std::basic_ostream<CharT,Traits> ) | |
obtiene el indicador de posición del archivo Original: gets the file position indicator The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función) |