Compartir vía


fpos (Clase)

La plantilla de clase describe un objeto que puede almacenar toda la información necesaria para restaurar un indicador de posición de archivo arbitraria en cualquier flujo. Un objeto de clase fpos<St> almacena de forma efectiva objetos de al menos dos miembros:

  • Un desplazamiento de bytes del tipo streamoff.

  • Un estado de conversión, para su uso por un objeto de clase basic_filebuf, del tipo St, normalmente mbstate_t.

También puede almacenar una posición de archivo arbitraria, para su uso por un objeto de clase basic_filebuf, del tipo fpos_t. Sin embargo, en un entorno con limitación de tamaño del archivo, puede que streamoff y fpos_t se usen a veces indistintamente. Para un entorno sin flujos que tengan una codificación dependiente del estado, mbstate_t puede en realidad estar sin usar. Por lo tanto, el número de objetos miembro almacenados puede variar.

Sintaxis

template <class Statetype>
class fpos

Parámetros

Statetype
Información de estado.

Constructores

Constructor Descripción
fpos Crea un objeto que contiene información sobre una posición (desplazamiento) en un flujo.

Funciones miembro

Función de miembro Descripción
seekpos Se usa de forma interna solo en la biblioteca estándar de C++. No llame a este método desde el código.
state Establece o devuelve el estado de la conversión.

Operadores

Operador Descripción
operator!= Indicadores de posición de archivo de las pruebas para desigualdad.
operator+ Incrementa un indicador de posición de archivo.
operator+= Incrementa un indicador de posición de archivo.
operator- Disminuye un indicador de posición de archivo.
operator-= Disminuye un indicador de posición de archivo.
operator== Indicadores de posición de archivo de las pruebas para igualdad.
operador streamoff Convierte objetos de tipo fpos a objetos de tipo streamoff.

Requisitos

Encabezado:<ios>

Espacio de nombres: std

fpos::fpos

Crea un objeto que contiene información sobre una posición (desplazamiento) en un flujo.

fpos(streamoff _Off = 0);

fpos(Statetype _State, fpos_t _Filepos);

Parámetros

_Off
El desplazamiento en el flujo.

_State
El estado inicial del objeto fpos.

_Filepos
El desplazamiento en el flujo.

Comentarios

El primer constructor almacena el desplazamiento _Off, en relación con el principio del archivo y en el estado de conversión inicial. Si _Off es -1, el objeto resultante representa una posición de flujo no válida.

El segundo constructor almacena un desplazamiento cero y el objeto _State.

fpos::operator!=

Indicadores de posición de archivo de las pruebas para desigualdad.

bool operator!=(const fpos<Statetype>& right) const;

Parámetros

right
El indicador de posición de archivo con el que se va a comparar.

Valor devuelto

true si los indicadores de posición de archivo no son iguales; en caso contrario, false.

Comentarios

La función miembro devuelve !(*this == right).

Ejemplo

// fpos_op_neq.cpp
// compile with: /EHsc
#include <fstream>
#include <iostream>

int main( )
{
   using namespace std;

   fpos<int> pos1, pos2;
   ifstream file;
   char c;

   // Compare two fpos object
   if ( pos1 != pos2 )
      cout << "File position pos1 and pos2 are not equal" << endl;
   else
      cout << "File position pos1 and pos2 are equal" << endl;

   file.open( "fpos_op_neq.txt" );
   file.seekg( 0 );   // Goes to a zero-based position in the file
   pos1 = file.tellg( );
   file.get( c);
   cout << c << endl;

   // Increment pos1
   pos1 += 1;
   file.get( c );
   cout << c << endl;

   pos1 = file.tellg( ) - fpos<int>( 2);
   file.seekg( pos1 );
   file.get( c );
   cout << c << endl;

   // Increment pos1
   pos1 = pos1 + fpos<int>( 1 );
   file.get(c);
   cout << c << endl;

   pos1 -= fpos<int>( 2 );
   file.seekg( pos1 );
   file.get( c );
   cout << c << endl;

   file.close( );
}

fpos::operator+

Incrementa un indicador de posición de archivo.

fpos<Statetype> operator+(streamoff _Off) const;

Parámetros

_Off
El desplazamiento por el que quiere incrementar el indicador de posición de archivo.

Valor devuelto

La posición en el archivo.

Comentarios

La función miembro devuelve fpos(*this) +=_Off.

Ejemplo

Vea operator!= para obtener un ejemplo del uso de operator+.

fpos::operator+=

Incrementa un indicador de posición de archivo.

fpos<Statetype>& operator+=(streamoff _Off);

Parámetros

_Off
El desplazamiento por el que quiere incrementar el indicador de posición de archivo.

Valor devuelto

La posición en el archivo.

Comentarios

La función miembro agrega _Off al objeto miembro de desplazamiento almacenado y después devuelve *this. Al trabajar con archivos, el resultado solo es válido para secuencias binarias que no tienen una codificación dependiente del estado.

Ejemplo

Vea operator!= para obtener un ejemplo del uso de operator+=.

fpos::operator-

Disminuye un indicador de posición de archivo.

streamoff operator-(const fpos<Statetype>& right) const;

fpos<Statetype> operator-(streamoff _Off) const;

Parámetros

right
Posición de archivo.

_Off
Desplazamiento del flujo.

Valor devuelto

La primera función miembro devuelve (streamoff)*this - (streamoff) right. La segunda función miembro devuelve fpos(*this) -= _Off.

Ejemplo

Vea operator!= para obtener un ejemplo del uso de operator-.

fpos::operator-=

Disminuye un indicador de posición de archivo.

fpos<Statetype>& operator-=(streamoff _Off);

Parámetros

_Off
Desplazamiento del flujo.

Valor devuelto

La función miembro devuelve fpos(*this) -= _Off.

Comentarios

Al trabajar con archivos, el resultado solo es válido para secuencias binarias que no tienen una codificación dependiente del estado.

Ejemplo

Vea operator!= para obtener un ejemplo del uso de operator-=.

fpos::operator==

Indicadores de posición de archivo de las pruebas para igualdad.

bool operator==(const fpos<Statetype>& right) const;

Parámetros

right
El indicador de posición de archivo con el que se va a comparar.

Valor devuelto

true si los indicadores de posición de archivo son iguales; en caso contrario, false.

Comentarios

La función miembro devuelve (streamoff)*this == (streamoff)right.

Ejemplo

Vea operator!= para obtener un ejemplo del uso de operator+=.

fpos::operator streamoff

Convierta objetos de tipo fpos en objetos de tipo streamoff.

operator streamoff() const;

Comentarios

La función miembro devuelve el objeto miembro de desplazamiento almacenado y cualquier desplazamiento adicional almacenado como parte del objeto miembro fpos_t.

Ejemplo

// fpos_op_streampos.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
#include <fstream>

int main( )
{
   using namespace std;
   streamoff s;
   ofstream file( "rdbuf.txt");

   fpos<mbstate_t> f = file.tellp( );
   // Is equivalent to ..
   // streampos f = file.tellp( );
   s = f;
   cout << s << endl;
}
0

fpos::seekpos

Este método se usa de forma interna solo en la biblioteca estándar de C++. No llame a este método desde el código.

fpos_t seekpos() const;

fpos::state

Establece o devuelve el estado de la conversión.

Statetype state() const;

void state(Statetype _State);

Parámetros

_State
El nuevo estado de conversión.

Valor devuelto

El estado de conversión.

Comentarios

La primera función miembro devuelve el valor almacenado en el objeto miembro St. La segunda función miembro almacena _State en el objeto miembro St.

Ejemplo

// fpos_state.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
#include <fstream>

int main() {
   using namespace std;
   streamoff s;
   ifstream file( "fpos_state.txt" );

   fpos<mbstate_t> f = file.tellg( );
   char ch;
   while ( !file.eof( ) )
      file.get( ch );
   s = f;
   cout << f.state( ) << endl;
   f.state( 9 );
   cout << f.state( ) << endl;
}

Consulte también

Seguridad para subprocesos en la biblioteca estándar de C++
Programación con iostream
Convenciones de iostreams