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
, normalmentembstate_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