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
, normalmentembstate_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;
}
Vea también
Seguridad para subprocesos en la biblioteca estándar de C++
Programación con iostream
Convenciones de iostreams