Namespaces
Variants

std::basic_istream<CharT,Traits>:: seekg

From cppreference.net
basic_istream & seekg ( pos_type pos ) ;
(1)
basic_istream & seekg ( off_type off, std:: ios_base :: seekdir dir ) ;
(2)

Définit l'indicateur de position d'entrée du streambuf associé actuel.

Avant de faire quoi que ce soit d'autre, seekg efface eofbit . (depuis C++11)

seekg se comporte comme une UnformattedInputFunction , sauf que gcount() n'est pas affecté. Après avoir construit et vérifié l'objet sentinelle,

1) si fail ( ) ! = true , positionne l'indicateur de position d'entrée à la valeur absolue (relative au début du fichier) pos . Plus précisément, exécute rdbuf ( ) - > pubseekpos ( pos, std:: ios_base :: in ) ( pubseekpos , à son tour, appelle seekpos du tampon spécifique, tel que basic_filebuf::seekpos , basic_stringbuf::seekpos , ou strstreambuf::seekpos ). En cas d'échec, appelle setstate ( std:: ios_base :: failbit ) .
2) si fail ( ) ! = true , positionne l'indicateur de position d'entrée à la position off , relative à la position définie par dir . Plus précisément, exécute rdbuf ( ) - > pubseekoff ( off, dir, std:: ios_base :: in ) . En cas d'échec, appelle setstate ( std:: ios_base :: failbit ) .

Table des matières

Paramètres

pos - position absolue pour définir l'indicateur de position d'entrée
off - position relative (positive ou négative) pour définir l'indicateur de position d'entrée
dir - définit la position de base à laquelle appliquer le décalage relatif. Il peut s'agir d'une des constantes suivantes :
Constante Explication
beg le début d'un flux
end la fin d'un flux
cur la position actuelle de l'indicateur de position du flux

Valeur de retour

* this

Exceptions

failure if an error occurred (the error state flag is not goodbit ) and exceptions() is set to throw for that state.

Si une opération interne lève une exception, elle est capturée et badbit est défini. Si exceptions() est défini pour badbit , l'exception est relancée.

Notes

seekg(n) n'est pas nécessairement équivalent à seekg(n, ios::beg) . std:: basic_ifstream , par exemple, requiert que la position absolue n provienne de tellg() .

Exemple

#include <iostream>
#include <sstream>
#include <string>
int main()
{
    std::string str = "Hello, world";
    std::istringstream in(str);
    std::string word1, word2;
    in >> word1;
    in.seekg(0); // rewind
    in >> word2;
    std::cout << "word1 = " << word1 << '\n'
              << "word2 = " << word2 << '\n';
}

Sortie :

word1 = Hello,
word2 = Hello,

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 Applicable à Comportement publié Comportement corrigé
LWG 129 C++98 il n'y avait aucun moyen d'indiquer un échec positionne failbit en cas d'échec
LWG 136 C++98 seekg pouvait positionner le flux de sortie positionne uniquement le flux d'entrée
LWG 537 C++98 le type de off était off_type& corrigé en off_type

Voir aussi

renvoie l'indicateur de position d'entrée
(fonction membre publique)
renvoie 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> )
invoque seekpos ( )
(fonction membre publique de std::basic_streambuf<CharT,Traits> )
[virtual]
repositionne la position du fichier, en utilisant l'adressage absolu
(fonction membre protégée virtuelle de std::basic_filebuf<CharT,Traits> )
[virtual]
repositionne le pointeur suivant dans la séquence d'entrée, la séquence de sortie, ou les deux en utilisant l'adressage absolu
(fonction membre protégée virtuelle de std::basic_stringbuf<CharT,Traits,Allocator> )
[virtual]
repositionne le pointeur suivant dans la séquence d'entrée, la séquence de sortie, ou les deux en utilisant l'adressage absolu
(fonction membre protégée virtuelle de std::strstreambuf )
invoque seekoff ( )
(fonction membre publique de std::basic_streambuf<CharT,Traits> )
[virtual]
repositionne la position du fichier, en utilisant l'adressage relatif
(fonction membre protégée virtuelle de std::basic_filebuf<CharT,Traits> )
[virtual]
repositionne le pointeur suivant dans la séquence d'entrée, la séquence de sortie, ou les deux, en utilisant l'adressage relatif
(fonction membre protégée virtuelle de std::basic_stringbuf<CharT,Traits,Allocator> )
[virtual]
repositionne le pointeur suivant dans la séquence d'entrée, la séquence de sortie, ou les deux, en utilisant l'adressage relatif
(fonction membre protégée virtuelle de std::strstreambuf )