Namespaces
Variants

std:: fpos

From cppreference.net
< cpp ‎ | io
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::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 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 .
  • 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::fpos produciendo 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)