Que signifient les g dans les membres de std::iostream
gcount
, tellg
et seekg
? Et le p dans pcount
, tellp
et seekp
?
Pourquoi ne s'appellent-ils pas simplement count
, tell
et seek
?
Dans les flux prenant en charge à la fois la lecture et l’écriture, vous avez en fait deux positions, une pour lire (c’est-à-dire "get" désignée par "g") et une pour écriture (c.-à-d. "Put" désignée par un "p").
Et c'est pourquoi vous avez un seekp
(hérité de basic_ostream
), et un seekg
(hérité de basic_istream
).
Note secondaire: Le langage C n’a - contrairement au C++ - qu’une seule de ces fonctions fseek
pour les deux pointeurs; Là, il est nécessaire de repositionner le pointeur lors du passage de read à write et vice-versa (cf., par exemple, this answer). Pour éviter cela, C++ propose des fonctions séparées pour la lecture et l’écriture, respectivement.
C++ propose deux pointeurs lors de la navigation dans le fichier: le pointeur get et le pointeur put. Le premier est utilisé pour les opérations de lecture, le second pour les opérations d'écriture.
seekg()
est utilisé pour déplacer le pointeur g et sur un emplacement souhaité par rapport à un point de référence.
tellg()
est utilisé pour savoir où se trouve le g et le pointeur dans un fichier.
seekp()
permet de déplacer le pointeur p à un emplacement souhaité par rapport à un point de référence.
tellp()
est utilisé pour savoir où se trouve le pointeur p ut dans un fichier.
Source principale: Quora , réponse par Gunjan B. Yadav le 1 déc. 2017.