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éralementmbstate_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