Namespaces
Variants

std:: fpos

From cppreference.net
< cpp ‎ | io
Défini dans l'en-tête <ios>
template < class State >
class fpos ;

Les spécialisations du modèle de classe std::fpos identifient des positions absolues dans un flux ou dans un fichier. Chaque objet de type fpos contient la position en octets dans le flux (généralement en tant que membre privé de type std::streamoff ) et l'état de conversion actuel, une valeur de type State (généralement std::mbstate_t ).

Les noms typedef suivants pour std :: fpos < std:: mbstate_t > sont fournis (bien qu'ils soient orthographiés différemment dans la norme, ils désignent le même type) :

Défini dans l'en-tête <iosfwd>
Type Définition
std::streampos std :: fpos < std:: char_traits < char > :: state_type >
std::wstreampos std :: fpos < std:: char_traits < wchar_t > :: state_type >
std::u8streampos (C++20) std :: fpos < std:: char_traits < char8_t > :: state_type >
std::u16streampos (C++11) std :: fpos < std:: char_traits < char16_t > :: state_type >
std::u32streampos (C++11) std :: fpos < std:: char_traits < char32_t > :: state_type >

Toutes les spécialisations de fpos satisfont aux exigences DefaultConstructible , CopyConstructible , CopyAssignable , Destructible , et EqualityComparable .

Si State est trivialement copiable, fpos a un constructeur de copie trivial. Si State est trivialement assignable par copie, fpos a un opérateur d'assignation par copie trivial. Si State est trivialement destructible, fpos a un destructeur trivial.

Table des matières

Paramètre de modèle

State - le type représentant l'état de décalage
Exigences de type
-
State doit satisfaire aux exigences de Destructible , CopyAssignable , CopyConstructible et DefaultConstructible .

Fonctions membres

obtient/définit la valeur de l'état de décalage
(fonction membre publique)

En outre, des fonctions membres et non membres sont fournies pour prendre en charge les opérations suivantes :

  • Un constructeur par défaut qui stocke un décalage de zéro et initialise par valeur l'objet d'état.
  • Un constructeur non explicite qui accepte un argument de type (éventuellement const) std::streamoff , qui stocke cet offset et initialise par défaut l'objet d'état. Ce constructeur doit également accepter la valeur spéciale std:: streamoff ( - 1 ) : le std::fpos construit de cette manière est retourné par certaines opérations de flux pour indiquer des erreurs.
  • Conversion explicite de (éventuellement const) fpos vers std::streamoff . Le résultat est le décalage stocké.
  • operator == et operator ! = qui comparent deux objets de type (éventuellement const) std::fpos et retournent une valeur prvalue bool . p ! = q est équivalent à ! ( p == q ) .
  • operator + et operator - tels que, pour un objet p de type (éventuellement const) fpos<State> et un objet o de type (éventuellement const) std::streamoff
  • p + o a le type fpos<State> et stocke un décalage qui résulte de l'addition de o au décalage de p .
  • o + p a un type convertible en fpos<State> et le résultat de la conversion est égal à p + o .
  • p - o a le type fpos<State> et stocke un décalage qui résulte de la soustraction de o du décalage de p .
  • operator + = et operator - = qui peuvent accepter un std::streamoff (éventuellement const) et qui ajoutent/soustraient respectivement cette valeur au décalage stocké.
  • operator - qui peut soustraire deux objets de type (éventuellement const) std::fpos produisant un std::streamoff , tel que pour deux tels objets p et q , p == q + ( p - q ) .

Notes

Certaines des fonctions membres des flux d'E/S retournent et manipulent des objets du typedef membre pos_type . Pour les flux, ces typedefs membres sont fournis par le paramètre de template Traits , qui par défaut est std::char_traits , qui définissent leurs pos_type comme des spécialisations de std::fpos . Le comportement de la bibliothèque de flux d'E/S est défini par l'implémentation lorsque Traits::pos_type n'est pas std :: fpos < std:: mbstate_t > (alias std::streampos , std::wstreampos , etc.).

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 57 C++98 streampos et wstreampos étaient contradictoirement
autorisés à être différents tout en étant requis d'être identiques
clarifié pour
être identiques
P0759R1 C++98 la spécification était peu claire et incomplète nettoyée
P1148R0 C++11 peu clair ce que sont et dans quel en-tête se trouvent les
définitions u16streampos et u32streampos
clarifié
LWG 2114
( P2167R3 )
C++98 les types de retour non- bool des comparaisons d'égalité étaient autorisés interdit

Voir aussi

représente la position relative du fichier/flux (décalage depuis fpos), suffisant pour représenter n'importe quelle taille de fichier
(typedef)
retourne l'indicateur de position de sortie
(fonction membre publique de std::basic_ostream<CharT,Traits> )
définit l'indicateur de position de sortie
(fonction membre publique de std::basic_ostream<CharT,Traits> )
obtient l'indicateur de position du fichier
(fonction)