std:: fpos
|
Definido en el encabezado
<ios>
|
||
|
template
<
class
State
>
class fpos ; |
||
Las especializaciones de la plantilla de clase
std::fpos
identifican posiciones absolutas en un stream o en un archivo. Cada objeto de tipo
fpos
almacena la posición de byte en el stream (típicamente como un miembro privado de tipo
std::streamoff
) y el estado de desplazamiento actual, un valor de tipo
State
(normalmente
std::mbstate_t
).
Los siguientes nombres typedef para std :: fpos < std:: mbstate_t > son proporcionados (aunque se escriben de forma diferente en el estándar, denotan el mismo tipo):
|
Definido en el encabezado
<iosfwd>
|
|
| Tipo | Definición |
std::streampos
|
std :: fpos < std:: char_traits < char > :: state_type > |
std::wstreampos
|
std :: fpos < std:: char_traits < wchar_t > :: state_type > |
std::u8streampos
(C++20)
|
std :: fpos < std:: char_traits < char8_t > :: state_type > |
std::u16streampos
(C++11)
|
std :: fpos < std:: char_traits < char16_t > :: state_type > |
std::u32streampos
(C++11)
|
std :: fpos < std:: char_traits < char32_t > :: state_type > |
Todas las especializaciones de
fpos
cumplen con los requisitos
DefaultConstructible
,
CopyConstructible
,
CopyAssignable
,
Destructible
, y
EqualityComparable
.
Si
State
es trivialmente copiable,
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.
Contenidos |
Parámetro de plantilla
| State | - | el tipo que representa el estado de desplazamiento |
| Requisitos de tipo | ||
-
State
debe cumplir con los requisitos de
Destructible
,
CopyAssignable
,
CopyConstructible
y
DefaultConstructible
.
|
||
Funciones miembro
|
obtiene/establece el valor del estado de desplazamiento
(función miembro pública) |
Además, se proporcionan funciones miembro y no miembro para admitir 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
std::fposconstruido de esta manera es devuelto por algunas operaciones de flujo para indicar errores.
-
Conversión explícita de (posiblemente const)
fposa std::streamoff . El resultado es el desplazamiento almacenado.
-
operator
==
y
operator
!
=
que comparan dos objetos de tipo (posiblemente const)
std::fposy retornan un bool prvalue. p ! = q es equivalente a ! ( p == q ) .
-
operator
+
y
operator
-
tales que, para un objeto
p
de tipo (posiblemente const)
fpos<State>y un objeto o de tipo (posiblemente const) std::streamoff
-
-
p
+
o
tiene tipo
fpos<State>y almacena un desplazamiento que es el resultado de sumar o al desplazamiento de p . -
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 restar o del desplazamiento de p .
-
p
+
o
tiene tipo
- operator + = y operator - = que pueden aceptar un (posiblemente const) std::streamoff y suma/resta del desplazamiento almacenado, respectivamente.
-
operator
-
que puede restar dos objetos de tipo (posiblemente const)
std::fposproduciendo un std::streamoff , de modo que para dos de tales objetos p y q , p == q + ( p - q ) .
Notas
Algunas de las
funciones miembro de flujos de E/S
devuelven y manipulan objetos del typedef miembro
pos_type
. Para los 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.).
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 57 | C++98 |
streampos
y
wstreampos
se permitían contradictoriamente
ser diferentes mientras se requería que fueran iguales |
aclarado que deben
ser iguales |
| P0759R1 | C++98 | la especificación era poco clara e incompleta | limpiada |
| P1148R0 | C++11 |
poco claro qué y en qué cabecera están las
definiciones
u16streampos
y
u32streampos
|
aclarado |
|
LWG 2114
( P2167R3 ) |
C++98 | se permitían tipos de retorno no- bool en comparaciones de igualdad | prohibido |
Véase también
|
representa la posición relativa de archivo/flujo (desplazamiento desde fpos), suficiente para representar cualquier tamaño de archivo
(typedef) |
|
|
devuelve el indicador de posición de salida
(función miembro pública de
std::basic_ostream<CharT,Traits>
)
|
|
|
establece el indicador de posición de salida
(función miembro pública de
std::basic_ostream<CharT,Traits>
)
|
|
|
obtiene el indicador de posición de archivo
(función) |