Partager via


fpos, classe

Le modèle de classe décrit un objet qui peut stocker toutes les informations nécessaires pour restaurer un indicateur de position de fichier arbitraire dans n’importe quel flux. Un objet de classe fpos<St> stocke efficacement au moins deux objets membres :

  • Un décalage d’octet de type streamoff.

  • État de conversion, à utiliser par un objet de classe basic_filebuf, de type St, généralement mbstate_t.

Il peut également stocker une position de fichier arbitraire, utilisable par un objet de classe basic_filebuf de type fpos_t. Cependant, pour un environnement avec une taille de fichier limitée, streamoff et fpos_t peuvent parfois être utilisés de manière interchangeable. Pour un environnement où aucun flux de données n'a un encodage de dépendance d'état, mbstate_t peut être inutilisé. Ainsi, le nombre d'objets membres stockés peut varier.

Syntaxe

template <class Statetype>
class fpos

Paramètres

Statetype
Informations d'état.

Constructeurs

Constructeur Description
fpos Créer un objet qui contient des informations sur une position (offset) dans un flux.

Fonctions Membre

Fonction membre Description
seekpos Utilisée uniquement en interne par la bibliothèque C++ Standard. N’appelez pas cette méthode à partir de votre code.
state Définit ou retourne l'état de la conversion.

Opérateurs

Opérateur Description
operator!= Teste l'inégalité d'indicateurs de position de fichier.
operator+ incrémente un indicateur de position de fichier.
operator+= incrémente un indicateur de position de fichier.
operator- Décrémente un indicateur de position de fichier.
operator-= Décrémente un indicateur de position de fichier.
operator== Teste l'égalité d'indicateurs de position de fichier.
operator streamoff Convertit un objet de type fpos en objet de type streamoff.

Spécifications

Header :<ios>

Espace de noms : std

fpos ::fpos

Créer un objet qui contient des informations sur une position (offset) dans un flux.

fpos(streamoff _Off = 0);

fpos(Statetype _State, fpos_t _Filepos);

Paramètres

_De
Décalage dans le flux.

_État
État de départ de l’objet fpos.

_Filepos
Décalage dans le flux.

Notes

Le premier constructeur stocke le décalage _Off, par rapport au début du fichier et à l’état de conversion initial. Si _Off est -1, l’objet résultant représente une position de flux non valide.

Le deuxième constructeur stocke un décalage zéro et l’objet _State.

fpos ::operator !=

Teste l'inégalité d'indicateurs de position de fichier.

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

Paramètres

right
Indicateur de position de fichier à comparer.

Valeur de retour

true si les indicateurs de position de fichier ne sont pas égaux ; sinon false.

Notes

La fonction membre retourne !(*this == right).

Exemple

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

incrémente un indicateur de position de fichier.

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

Paramètres

_De
Décalage duquel vous voulez incrémenter l’indicateur de position de fichier.

Valeur de retour

Position dans le fichier.

Notes

La fonction membre retourne fpos(*this) +=_Off.

Exemple

Consultez operator!= pour obtenir un exemple d’utilisation de operator+.

fpos ::operator+=

incrémente un indicateur de position de fichier.

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

Paramètres

_De
Décalage duquel vous voulez incrémenter l’indicateur de position de fichier.

Valeur de retour

Position dans le fichier.

Notes

La fonction membre ajoute _Off à l’objet membre de décalage stocké, puis retourne *this. Lorsque vous utilisez des fichiers, le résultat est valide uniquement pour les flux binaires qui n’ont pas d’encodage dépendant de l’état.

Exemple

Consultez operator!= pour obtenir un exemple d’utilisation de operator+=.

fpos ::operator-

Décrémente un indicateur de position de fichier.

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

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

Paramètres

right
Position du fichier.

_De
Décalage du flux.

Valeur de retour

La première fonction membre retourne (streamoff)*this - (streamoff) right. La deuxième fonction membre retourne fpos(*this) -= _Off.

Exemple

Consultez operator!= pour obtenir un exemple d’utilisation de operator-.

fpos ::operator-=

Décrémente un indicateur de position de fichier.

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

Paramètres

_De
Décalage du flux.

Valeur de retour

La fonction membre retourne fpos(*this) -= _Off.

Notes

Lorsque vous utilisez des fichiers, le résultat est valide uniquement pour les flux binaires qui n’ont pas d’encodage dépendant de l’état.

Exemple

Consultez operator!= pour obtenir un exemple d’utilisation de operator-=.

fpos ::operator==

Teste l'égalité d'indicateurs de position de fichier.

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

Paramètres

right
Indicateur de position de fichier à comparer.

Valeur de retour

true si les indicateurs de position de fichier sont égaux ; sinon false.

Notes

La fonction membre retourne (streamoff)*this == (streamoff)right.

Exemple

Consultez operator!= pour obtenir un exemple d’utilisation de operator+=.

fpos ::operator streamoff

Convertit un objet de type fpos en objet de type streamoff.

operator streamoff() const;

Notes

La fonction membre retourne l’objet membre de décalage stocké et tout décalage supplémentaire stocké dans le cadre de l’objet membre fpos_t.

Exemple

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

Cette méthode est uniquement utilisée en interne par la bibliothèque C++ Standard. N’appelez pas cette méthode à partir de votre code.

fpos_t seekpos() const;

fpos ::state

Définit ou retourne l'état de la conversion.

Statetype state() const;

void state(Statetype _State);

Paramètres

_État
Nouvel état de conversion.

Valeur de retour

État de conversion.

Notes

La première fonction membre retourne la valeur stockée dans l’objet St membre. La deuxième fonction membre stocke _State dans l’objet St membre.

Exemple

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

Voir aussi

Sécurité des threads dans la bibliothèque C++ Standard
iostream, programmation
iostreams, conventions