Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | io‎ | basic istream
 
 
 
 
basic_istream& seekg( pos_type pos );
(1)
basic_istream& seekg( off_type off, std::ios_base::seekdir dir );
(2)

Setzt den Eingabepositionsanzeiger des zugehörigen streambuf-Objekts.

Vor allen anderen Operationen löscht seekg das eofbit. (seit C++11)

seekg verhält sich wie eine UnformattedInputFunction, außer dass gcount() nicht beeinflusst wird. Nach dem Erstellen und Überprüfen des Sentry-Objekts,

1) Wenn fail() != true ist, wird der Eingabepositionsanzeiger auf den absoluten Wert (relativ zum Dateianfang) pos gesetzt. Genauer gesagt, wird rdbuf()->pubseekpos(pos, std::ios_base::in) aufgerufen (pubseekpos ruft wiederum seekpos des spezifischen Puffers auf, wie z.B. basic_filebuf::seekpos, basic_stringbuf::seekpos oder strstreambuf::seekpos). Im Fehlerfall wird setstate(std::ios_base::failbit) aufgerufen.
2) Wenn fail() != true ist, wird der Eingabepositionsanzeiger auf die Position off gesetzt, relativ zur durch dir definierten Position. Genauer gesagt, wird rdbuf()->pubseekoff(off, dir, std::ios_base::in) aufgerufen. Im Fehlerfall wird setstate(std::ios_base::failbit) aufgerufen.

Inhalt

[edit] Parameter

pos - absolute Position, auf die der Eingabepositionsanzeiger gesetzt werden soll
off - relative Position (positiv oder negativ), auf die der Eingabepositionsanzeiger gesetzt werden soll
dir - definiert die Basisposition, auf die der relative Offset angewendet wird. Es kann eine der folgenden Konstanten sein
Konstante Erklärung
beg der Anfang eines Streams
end das Ende eines Streams
cur die aktuelle Position des Stream-Positionsanzeigers

[edit] Rückgabewert

*this

[edit] Ausnahmen

failure, wenn ein Fehler aufgetreten ist (der Fehlerstatus-Flag ist nicht goodbit) und exceptions() für diesen Zustand zum Werfen gesetzt ist.

Wenn eine interne Operation eine Ausnahme auslöst, wird diese abgefangen und badbit gesetzt. Wenn exceptions() für badbit gesetzt ist, wird die Ausnahme erneut ausgelöst.

[edit] Hinweise

seekg(n) ist nicht notwendigerweise äquivalent zu seekg(n, ios::beg). std::basic_ifstream zum Beispiel erfordert, dass die absolute Position n von tellg() stammt.

[edit] Beispiel

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

Ausgabe

word1 = Hello,
word2 = Hello,

[edit] Fehlerberichte

Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 129 C++98 es gab keine Möglichkeit, einen Fehler anzuzeigen setzt failbit bei einem Fehler
LWG 136 C++98 seekg könnte den Ausgabestream setzen setzt nur den Eingabestream
LWG 537 C++98 der Typ von off war off_type& korrigiert zu off_type

[edit] Siehe auch

gibt den Eingabepositionsindikator zurück
(public member function) [edit]
gibt den Ausgabepositionsindikator zurück
(public member function of std::basic_ostream<CharT,Traits>) [bearbeiten]
setzt den Ausgabepositionsindikator
(public member function of std::basic_ostream<CharT,Traits>) [bearbeiten]
ruft seekpos() auf
(öffentliche Member-Funktion von std::basic_streambuf<CharT,Traits>) [bearbeiten]
[virtuell]
positioniert die Dateiposition neu, unter Verwendung absoluter Adressierung
(virtual protected member function of std::basic_filebuf<CharT,Traits>) [edit]
[virtuell]
positioniert den nächsten Zeiger in der Eingabesequenz, Ausgabesequenz oder beidem neu, unter Verwendung absoluter Adressierung
(virtual protected member function of std::basic_stringbuf<CharT,Traits,Allocator>) [edit]
[virtuell]
positioniert den nächsten Zeiger in der Eingabesequenz, Ausgabesequenz oder beidem neu, unter Verwendung absoluter Adressierung
(virtual protected member function of std::strstreambuf) [edit]
ruft seekoff() auf
(öffentliche Member-Funktion von std::basic_streambuf<CharT,Traits>) [bearbeiten]
[virtuell]
positioniert die Dateiposition neu, unter Verwendung relativer Adressierung
(virtuelle protected Member-Funktion von std::basic_filebuf<CharT,Traits>) [edit]
[virtuell]
positioniert den nächsten Zeiger in der Eingabesequenz, Ausgabesequenz oder beidem neu, unter Verwendung relativer Adressierung
(virtuelle protected Member-Funktion von std::basic_stringbuf<CharT,Traits,Allocator>) [edit]
[virtuell]
positioniert den nächsten Zeiger in der Eingabesequenz, Ausgabesequenz oder beidem neu, unter Verwendung relativer Adressierung
(virtuelle protected Member-Funktion von std::strstreambuf) [edit]