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)

Establece el indicador de posición de entrada del objeto streambuf asociado actual.

Antes de hacer cualquier otra cosa, seekg borra eofbit . (since C++11)

seekg se comporta como UnformattedInputFunction , excepto que gcount() no se ve afectado. Después de construir y verificar el objeto centinela,

1) si fail ( ) ! = true , establece el indicador de posición de entrada al valor absoluto (relativo al inicio del archivo) pos . Específicamente, ejecuta rdbuf ( ) - > pubseekpos ( pos, std:: ios_base :: in ) ( pubseekpos , a su vez, llama a seekpos del buffer específico, como basic_filebuf::seekpos , basic_stringbuf::seekpos , o strstreambuf::seekpos ). En caso de fallo, llama a setstate ( std:: ios_base :: failbit ) .
2) si fail ( ) ! = true , establece el indicador de posición de entrada en la posición off , relativa a la posición definida por dir . Específicamente, ejecuta rdbuf ( ) - > pubseekoff ( off, dir, std:: ios_base :: in ) . En caso de fallo, llama a setstate ( std:: ios_base :: failbit ) .

Contenidos

Parámetros

pos - posición absoluta para establecer el indicador de posición de entrada
off - posición relativa (positiva o negativa) para establecer el indicador de posición de entrada
dir - define la posición base para aplicar el desplazamiento relativo. Puede ser una de las siguientes constantes:
Constante Explicación
beg el inicio de un flujo
end el final de un flujo
cur la posición actual del indicador de posición del flujo

Valor de retorno

* this

Excepciones

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

Si una operación interna lanza una excepción, es capturada y se establece badbit . Si exceptions() está configurado para badbit , la excepción es relanzada.

Notas

seekg(n) no es necesariamente equivalente a seekg(n, ios::beg) . std:: basic_ifstream , por ejemplo, requiere que la posición absoluta n provenga de tellg() .

Ejemplo

#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';
}

Salida:

word1 = Hello,
word2 = Hello,

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 129 C++98 no había forma de indicar un fallo establece failbit en caso de fallo
LWG 136 C++98 seekg podía establecer el flujo de salida solo establece el flujo de entrada
LWG 537 C++98 el tipo de off era off_type& corregido a off_type

Véase también

devuelve el indicador de posición de entrada
(función miembro pública)
devuelve el indicador de posición de salida
(función miembro pública de std::basic_ostream<CharT,Traits> )
establece el indicador de posición de salida
(función miembro pública de std::basic_ostream<CharT,Traits> )
invoca seekpos ( )
(función miembro pública de std::basic_streambuf<CharT,Traits> )
[virtual]
reposiciona la posición del archivo, usando direccionamiento absoluto
(función miembro protegida virtual de std::basic_filebuf<CharT,Traits> )
[virtual]
reposiciona el siguiente puntero en la secuencia de entrada, secuencia de salida, o ambas usando direccionamiento absoluto
(función miembro protegida virtual de std::basic_stringbuf<CharT,Traits,Allocator> )
[virtual]
reposiciona el siguiente puntero en la secuencia de entrada, secuencia de salida, o ambas usando direccionamiento absoluto
(función miembro protegida virtual de std::strstreambuf )
invoca seekoff ( )
(función miembro pública de std::basic_streambuf<CharT,Traits> )
[virtual]
reposiciona la posición del archivo, usando direccionamiento relativo
(función miembro protegida virtual de std::basic_filebuf<CharT,Traits> )
[virtual]
reposiciona el siguiente puntero en la secuencia de entrada, secuencia de salida, o ambas, usando direccionamiento relativo
(función miembro protegida virtual de std::basic_stringbuf<CharT,Traits,Allocator> )
[virtual]
reposiciona el siguiente puntero en la secuencia de entrada, secuencia de salida, o ambas, usando direccionamiento relativo
(función miembro protegida virtual de std::strstreambuf )