Partilhar via


Classe fpos

O modelo de classe descreve um objeto que pode armazenar todas as informações necessárias para restaurar um indicador de posição de arquivo arbitrária dentro de qualquer fluxo. Um objeto da classe fpos<St> armazena efetivamente pelo menos dois objetos membro:

  • Um deslocamento de bytes, do tipo streamoff.

  • Um estado de conversão, para uso por um objeto da classe basic_filebuf, do tipo St, normalmente mbstate_t.

Ele também pode armazenar uma posição de arquivo arbitrária, para uso por um objeto da classe basic_filebuf, do tipo fpos_t. Para um ambiente com tamanho do arquivo limitado, no entanto, streamoff e fpos_t podem às vezes ser usados de maneira intercambiável. Para um ambiente sem fluxos com uma codificação dependente do estado, mbstate_t pode ficar sem uso. Portanto, o número de objetos membro armazenados pode variar.

Sintaxe

template <class Statetype>
class fpos

Parâmetros

Statetype
Informações de estado.

Construtores

Construtor Descrição
fpos Cria um objeto que contém informações sobre uma posição (deslocamento) em um fluxo.

Funções de membro

Função de membro Descrição
seekpos Usado internamente apenas pela Biblioteca Padrão C++. Não chame este método do seu código.
state Define ou retorna o estado da conversão.

Operadores

Operador Descrição
operator!= Testa indicadores de posição do arquivo quanto à desigualdade.
operator+ Incrementa um indicador de posição de arquivo.
operator+= Incrementa um indicador de posição de arquivo.
operator- Diminui um indicador de posição de arquivo.
operador-= Diminui um indicador de posição de arquivo.
operator== Testa indicadores de posição do arquivo quanto à igualdade.
operator streamoff Converte um objeto do tipo fpos para um objeto do tipo streamoff.

Requisitos

Cabeçalho:<ios>

Namespace: std

fpos::fpos

Cria um objeto que contém informações sobre uma posição (deslocamento) em um fluxo.

fpos(streamoff _Off = 0);

fpos(Statetype _State, fpos_t _Filepos);

Parâmetros

_Off
O deslocamento no fluxo.

_State
O estado inicial do objeto fpos.

_Filepos
O deslocamento no fluxo.

Comentários

O primeiro construtor armazena o deslocamento _Off, relativo ao início do arquivo e no estado de conversão inicial. Se _Off for -1, o objeto resultante representará uma posição de fluxo inválida.

O segundo construtor armazena um deslocamento zero e o objeto _State.

fpos::operador!=

Testa indicadores de posição do arquivo quanto à desigualdade.

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

Parâmetros

direita
O indicador de posição do arquivo para comparação.

Valor de retorno

true se os indicadores de posição do arquivo forem iguais; caso contrário, false.

Comentários

A função membro retorna !(*this == right).

Exemplo

// 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::operador+

Incrementa um indicador de posição de arquivo.

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

Parâmetros

_Off
O deslocamento segundo o qual você deseja incrementar o indicador de posição do arquivo.

Valor de retorno

A posição no arquivo.

Comentários

A função membro retorna fpos(*this) +=_Off.

Exemplo

Consulte operator!= para ver uma amostra do uso de operator+.

fpos::operador+=

Incrementa um indicador de posição de arquivo.

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

Parâmetros

_Off
O deslocamento segundo o qual você deseja incrementar o indicador de posição do arquivo.

Valor de retorno

A posição no arquivo.

Comentários

A função de membro adiciona _Off ao objeto membro do deslocamento armazenado e, em seguida, retorna *this. Ao trabalhar com arquivos, o resultado é válido apenas para fluxos binários que não têm uma codificação dependente do estado.

Exemplo

Consulte operator!= para ver uma amostra do uso de operator+=.

fpos::operador-

Diminui um indicador de posição de arquivo.

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

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

Parâmetros

direita
Posição do arquivo.

_Off
Deslocamento do fluxo.

Valor de retorno

A primeira função membro retorna (streamoff)*this - (streamoff) right. A segunda função membro retorna fpos(*this) -= _Off.

Exemplo

Consulte operator!= para ver uma amostra do uso de operator-.

fpos::operador-=

Diminui um indicador de posição de arquivo.

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

Parâmetros

_Off
Deslocamento do fluxo.

Valor de retorno

A função membro retorna fpos(*this) -= _Off.

Comentários

Ao trabalhar com arquivos, o resultado é válido apenas para fluxos binários que não têm uma codificação dependente do estado.

Exemplo

Consulte operator!= para ver uma amostra do uso de operator-=.

fpos::operador==

Testa indicadores de posição do arquivo quanto à igualdade.

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

Parâmetros

direita
O indicador de posição do arquivo para comparação.

Valor de retorno

true e os indicadores de posição do arquivo forem iguais; caso contrário, false.

Comentários

A função membro retorna (streamoff)*this == (streamoff)right.

Exemplo

Consulte operator!= para ver uma amostra do uso de operator+=.

fpos::operator streamoff

Converte um objeto do tipo fpos para um objeto do tipo streamoff.

operator streamoff() const;

Comentários

A função membro retorna o objeto membro de deslocamento armazenado e qualquer deslocamento adicional armazenado como parte do objeto membro fpos_t.

Exemplo

// 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 é usado internamente apenas pela Biblioteca Padrão C++. Não chame este método do seu código.

fpos_t seekpos() const;

fpos::estado

Define ou retorna o estado da conversão.

Statetype state() const;

void state(Statetype _State);

Parâmetros

_State
O novo estado de conversão.

Valor de retorno

O estado de conversão.

Comentários

A primeira função de membro retorna o valor armazenado no objeto membro St. A segunda função de membro armazena _State no objeto membro St.

Exemplo

// 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;
}

Confira também

Acesso Thread-Safe na Biblioteca Padrão C++
Programação de iostream
Convenções de iostreams