basic_istream
-Klasse
Beschreibt ein Objekt, das die Extraktion von Elementen und codierten Objekten aus einem Datenstrompuffer mit Elementen des Typs Char_T
steuert, auch bekannt als , char_type
dessen Zeicheneigenschaften von der Klasse Tr
bestimmt werden, auch bekannt als traits_type
.
Syntax
template <class Char_T, class Tr = char_traits<Char_T>>
class basic_istream : virtual public basic_ios<Char_T, Tr>
Bemerkungen
Die meisten Memberfunktionen, die überladen operator>>
sind, werden formatierte Eingabefunktionen. Sie entsprechen dem folgenden Muster:
iostate state = goodbit;
const sentry ok(*this);
if (ok)
{
try
{
/*extract elements and convert
accumulate flags in state.
store a successful conversion*/
}
catch (...)
{
try
{
setstate(badbit);
}
catch (...)
{
}
if ((exceptions()& badbit) != 0)
throw;
}
}
setstate(state);
return (*this);
Viele weitere Memberfunktionen sind Funktionen für unformatierte Eingabe. Sie entsprechen dem folgenden Muster:
iostate state = goodbit;
count = 0; // the value returned by gcount
const sentry ok(*this, true);
if (ok)
{
try
{
/* extract elements and deliver
count extracted elements in count
accumulate flags in state */
}
catch (...)
{
try
{
setstate(badbit);
}
catch (...)
{
}
if ((exceptions()& badbit) != 0)
throw;
}
}
setstate(state);
Beide Gruppen von Funktionen rufen auf setstate(eofbit)
, wenn sie ein Ende der Datei beim Extrahieren von Elementen auftreten. Weitere Informationen finden Sie unter setstate
.
Ein Objekt von Klassenspeichern basic_istream<Char_T, Tr>
:
Ein virtuelles öffentliches Basisobjekt der Klasse
basic_ios<Char_T, Tr>
. Weitere Informationen finden Sie unterbasic_ios
.Eine Extraktionsanzahl für den letzten nicht formatierten Eingabevorgang (aufgerufen
count
im vorherigen Code).
Beispiel
Weitere Informationen zu Eingabedatenströme finden Sie im Beispiel für basic_ifstream
Klasse .
Konstruktoren
Konstruktor | BESCHREIBUNG |
---|---|
basic_istream |
Konstruiert ein Objekt vom Typ basic_istream . |
Memberfunktionen
Memberfunktion | BESCHREIBUNG |
---|---|
gcount |
Gibt die Anzahl von Zeichen zurück, die bei der letzten unformatierten Eingabe gelesen wurden. |
get |
Liest mindestens ein Zeichen aus dem Eingabestream. |
getline |
Liest eine Zeile aus dem Eingabestream. |
ignore |
Bewirkt, dass eine Anzahl von Elementen ab der aktuellen Leseposition übersprungen werden. |
peek |
Gibt das nächste zu lesende Zeichen zurück. |
putback |
Schreibt ein angegebenes Zeichen in den Stream. |
read |
Liest eine angegebene Anzahl von Zeichen aus dem Stream und speichert diese in einem Array. |
readsome |
Liest nur aus dem Puffer. |
seekg |
Verschiebt die Leseposition in einem Stream. |
sentry |
Die geschachtelte Klasse beschreibt ein Objekt, dessen Deklaration die Funktionen für formatierte Eingabe und für unformatierte Eingabe strukturiert. |
swap |
Tauscht dieses basic_istream -Objekt gegen den bereitgestellten basic_istream -Objektparameter aus. |
sync |
Synchronisiert das zugeordnete Eingabegerät des Datenstroms mit dem Puffer des Datenstroms. |
tellg |
Meldet die aktuelle Leseposition im Stream. |
unget |
Schreibt das zuletzt gelesene Zeichen zurück in den Stream. |
Operatoren
Operator | Beschreibung |
---|---|
operator>> |
Ruft eine Funktion für den Eingabestream auf oder liest formatierte Daten aus dem Eingabestream. |
operator= |
Weist den basic_istream auf der rechten Seite des Operators diesem Objekt zu. Es handelt sich um eine Verschiebungszuweisung mit einem rvalue Verweis, der keine Kopie hinterlässt. |
Requirements (Anforderungen)
Header:<istream>
Namespace:std
basic_istream::basic_istream
Konstruiert ein Objekt vom Typ basic_istream
.
explicit basic_istream(
basic_streambuf<Char_T, Tr>* strbuf,
bool _Isstd = false);
basic_istream(basic_istream&& right);
Parameter
strbuf
Ein Objekt vom Typ basic_streambuf.
_Isstd
true
wenn es sich um einen Standarddatenstrom handelt; andernfalls false
.
right
Ein zu kopierendes basic_istream
-Objekt.
Bemerkungen
Der erste Konstruktor initialisiert die Basisklasse durch Aufrufen init(strbuf)
. Außerdem wird null in der Extraktionsanzahl gespeichert. Weitere Informationen finden Sie unter init
. Weitere Informationen zu dieser Extraktionsanzahl finden Sie im Abschnitt "Hinweise" derbasic_istream
Klassenübersicht.
Der zweite Konstruktor initialisiert die Basisklasse durch Aufrufen von move(right)
. Es speichert auch die Extraktionsanzahl und speichert right.gcount()
Null in der Extraktionsanzahl für right
.
Beispiel
Weitere Informationen zu Eingabedatenströme finden Sie im Beispiel basic_ifstream::basic_ifstream
.
basic_istream::gcount
Gibt die Anzahl von Zeichen zurück, die bei der letzten unformatierten Eingabe gelesen wurden.
streamsize gcount() const;
Rückgabewert
Die Extraktionsanzahl.
Bemerkungen
Verwenden Sie basic_istream::get
zum Lesen nicht formatierter Zeichen.
Beispiel
// basic_istream_gcount.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main( )
{
cout << "Type the letter 'a': ";
ws( cin );
char c[10];
cin.get( &c[0],9 );
cout << c << endl;
cout << cin.gcount( ) << endl;
}
a
Type the letter 'a': a
1
basic_istream::get
Liest mindestens ein Zeichen aus dem Eingabestream.
int_type get();
basic_istream<Char_T, Tr>& get(Char_T& Ch);
basic_istream<Char_T, Tr>& get(Char_T* str, streamsize count);
basic_istream<Char_T, Tr>& get(Char_T* str, streamsize count, Char_T delimiter);
basic_istream<Char_T, Tr>& get(basic_streambuf<Char_T, Tr>& strbuf);
basic_istream<Char_T, Tr>& get(basic_streambuf<Char_T, Tr>& strbuf, Char_T delimiter);
Parameter
count
Die Anzahl der zu lesenden Zeichen aus strbuf
.
delimiter
Das Zeichen, das den Lesevorgang beenden sollte, wenn es vorher count
aufgetreten ist.
str
Eine Zeichenfolge, in die geschrieben werden soll.
Ch
Ein Zeichen, das abgerufen werden soll.
strbuf
Ein Puffer, in den geschrieben werden soll.
Rückgabewert
Die parameterlose Form der get
Rückgabe des Elements wird als ganze Zahl oder Ende der Datei gelesen. Die verbleibenden Formulare geben den Datenstrom () zurück*this
.
Bemerkungen
Die erste nicht formatierte Eingabefunktion extrahiert ein Element, falls möglich, wie durch zurückgeben rdbuf->sbumpc
. Andernfalls wird traits_type::
eof
zurückgegeben. Wenn die Funktion kein Element extrahiert, wird es aufgerufen setstate(failbit)
. Weitere Informationen finden Sie unter setstate
.
Die zweite Funktion extrahiert das int_type
Element meta
auf dieselbe Weise. Wenn meta
der Vergleich gleich traits_type::eof
ist, wird die Funktion aufgerufen setstate(failbit)
. Andernfalls speichert traits_type::to_char_type(meta)
er sich in Ch
. Die Funktion gibt *this
zurück. Weitere Informationen finden Sie unter to_char_type
.
Die dritte Funktion gibt zurück get(str, count, widen('\n'))
.
Die vierte Funktion extrahiert elemente und speichert sie am Anfang des Arrays count - 1
str
. Sie speichert char_type
immer nach den extrahierten Elementen, die sie speichert. In der Reihenfolge der Tests hält die Extrahierung hier an:
Am Ende der Datei.
Nachdem die Funktion ein Element extrahiert, das gleich
delimiter
ist. In diesem Fall wird das Element in die kontrollierte Sequenz zurückgesetzt.Nachdem die Funktion Elemente extrahiert
count - 1
hat.
Wenn die Funktion keine Elemente extrahiert, ruft sie auf setstate(failbit)
. In jedem Fall gibt sie *this
zurück.
Die fünfte Funktion gibt zurück get(strbuf, widen('\n'))
.
Die sechste Funktion extrahiert Elemente und fügt sie ein strbuf
. Die Extraktion stoppt am Ende der Datei oder auf einem Element, das gleich gleich ist delimiter
, das nicht extrahiert wird. Sie hält ebenfalls an, ohne die jeweiligen Elemente zu extrahieren, wenn bei einer Einfügung ein Fehler auftritt, oder löst eine Ausnahme aus (die aufgefangen, aber nicht erneut ausgelöst wird). Wenn die Funktion keine Elemente extrahiert, wird sie aufgerufen setstate(failbit)
. In jedem Fall gibt die Funktion zurück *this
.
Beispiel
// basic_istream_get.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main( )
{
char c[10];
c[0] = cin.get( );
cin.get( c[1] );
cin.get( &c[2],3 );
cin.get( &c[4], 4, '7' );
cout << c << endl;
}
1111
basic_istream::getline
Ruft eine Zeile aus dem Eingabestream ab.
basic_istream<Char_T, Tr>& getline(
char_type* str,
streamsize count);
basic_istream<Char_T, Tr>& getline(
char_type* str,
streamsize count,
char_type delimiter);
Parameter
count
Die Anzahl der zu lesenden Zeichen aus strbuf
.
delimiter
Das Zeichen, das den Lesevorgang beenden soll, wenn es vor count
der Zeichenfolge aufgetreten ist.
str
Eine Zeichenfolge, in die geschrieben werden soll.
Rückgabewert
Der Datenstrom (*this
).
Bemerkungen
Die erste dieser unformatierten Eingabefunktionen gibt zurück getline(str, count, widen('\n'))
.
Die zweite Funktion extrahiert elemente count - 1
und speichert sie ab Dem Array ab .str
Das Abschlusszeichen der Zeichenfolge wird immer nach jedem Element gespeichert, das sie speichert. In der Reihenfolge der Tests hält die Extrahierung hier an:
Am Ende der Datei.
Nachdem die Funktion ein Element extrahiert hat, das gleich ist
delimiter
. In diesem Fall wird das Element nicht zurückgestellt, und es wird nicht an die kontrollierte Sequenz angefügt.Nachdem die Funktion Elemente extrahiert
count - 1
hat.
Wenn die Funktion keine Elemente oder count - 1
Elemente extrahiert, wird sie aufgerufen setstate(failbit)
. In jedem Fall gibt sie *this
zurück. Weitere Informationen finden Sie unter setstate
.
Beispiel
// basic_istream_getline.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main( )
{
char c[10];
cin.getline( &c[0], 5, '2' );
cout << c << endl;
}
121
basic_istream::ignore
Bewirkt, dass eine Anzahl von Elementen ab der aktuellen Leseposition übersprungen werden.
basic_istream<Char_T, Tr>& ignore(
streamsize count = 1,
int_type delimiter = traits_type::eof());
Parameter
count
Die Anzahl von Elementen, die ab der aktuellen Leseposition übersprungen werden sollen.
delimiter
Das Element, das vor der Anzahl aufgetreten ist, bewirkt ignore
, dass alle Elemente delimiter
nach dem Lesen zurückgegeben und zugelassen werden.
Rückgabewert
Der Datenstrom (*this
).
Bemerkungen
Die unformatierte Eingabefunktion extrahiert bis zu count
Elemente und verwirft sie. Wenn count
dies numeric_limits<int>::max
jedoch gleich ist, wird es als willkürlich groß genommen. Die Extraktion stoppt frühzeitig am Ende der Datei oder auf einem Element Ch
, traits_type::to_int_type(Ch)
das gleich delimiter
ist (was auch extrahiert wird). Die Funktion gibt *this
zurück. Weitere Informationen finden Sie unter to_int_type
.
Beispiel
// basic_istream_ignore.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
using namespace std;
char chararray[10];
cout << "Type 'abcdef': ";
cin.ignore( 5, 'c' );
cin >> chararray;
cout << chararray;
}
Type 'abcdef': abcdef
def
basic\_istream::operator>>
Ruft eine Funktion für den Eingabestream auf oder liest formatierte Daten aus dem Eingabestream.
basic_istream& operator>>(basic_istream& (* Pfn)(basic_istream&));
basic_istream& operator>>(ios_base& (* Pfn)(ios_base&));
basic_istream& operator>>(basic_ios<Char_T, Tr>& (* Pfn)(basic_ios<Char_T, Tr>&));
basic_istream& operator>>(basic_streambuf<Char_T, Tr>* strbuf);
basic_istream& operator>>(bool& val);
basic_istream& operator>>(short& val);
basic_istream& operator>>(unsigned short& val);
basic_istream& operator>>(int& val);
basic_istream& operator>>(unsigned int& val);
basic_istream& operator>>(long& val);
basic_istream& operator>>(unsigned long& val);
basic_istream& operator>>(long long& val);
basic_istream& operator>>(unsigned long long& val);
basic_istream& operator>>(void *& val);
basic_istream& operator>>(float& val);
basic_istream& operator>>(double& val);
basic_istream& operator>>(long double& val);
Parameter
Pfn
Ein Funktionszeiger.
strbuf
Ein Objekt vom Typ stream_buf
.
val
Der Wert, der aus dem Stream gelesen werden soll.
Rückgabewert
Der Datenstrom (*this
).
Bemerkungen
Der Header <istream>
definiert außerdem mehrere globale Extraktionsoperatoren. Weitere Informationen finden Sie unter operator>> (\<istream>)
.
Die erste Memberfunktion stellt sicher, dass ein Ausdruck der Formularaufrufe istr >> ws
ws(istr)
und dann zurückgegeben wird *this
. Weitere Informationen finden Sie unter ws
.
Die zweite und dritte Funktion stellen sicher, dass sich andere Manipulatoren, z. B hex
. , ähnlich verhalten. Die verbleibenden Funktionen sind die formatierten Eingabefunktionen.
Die Funktion:
basic_istream& operator>>(
basic_streambuf<Char_T, Tr>* strbuf);
extrahiert Elemente, wenn strbuf
es sich nicht um einen Nullzeiger handelt, und fügt sie in strbuf
ein. Die Extrahierung hält am Ende der Datei an. Sie hält ebenfalls an, ohne die jeweiligen Elemente zu extrahieren, wenn eine Einfügung fehlschlägt, oder löst eine Ausnahme aus (die aufgefangen, aber nicht erneut ausgelöst wird). Wenn die Funktion keine Elemente extrahiert, wird sie aufgerufen setstate(failbit)
. In jedem Fall gibt die Funktion zurück *this
. Weitere Informationen finden Sie unter setstate
.
Die Funktion:
basic_istream& operator>>(bool& val);
extrahiert ein Feld und konvertiert es durch Aufrufen use_facet< num_get<Char_T, InIt>(getloc).get( InIt(rdbuf), Init(0), *this, getloc, val)
in einen booleschen Wert. InIt
Hier ist definiert als istreambuf_iterator<Char_T, Tr>
. Die Funktion gibt *this
zurück.
Weitere Informationen finden Sie unter use_facet
, , get
getloc
, rdbuf
und istreambuf_iterator
.
Jede der Funktionen:
basic_istream& operator>>(short& val);
basic_istream& operator>>(unsigned short& val);
basic_istream& operator>>(int& val);
basic_istream& operator>>(unsigned int& val);
basic_istream& operator>>(long& val);
basic_istream& operator>>(unsigned long& val);
basic_istream& operator>>(long long& val);
basic_istream& operator>>(unsigned long long& val);
basic_istream& operator>>(void *& val);
extrahieren Sie ein Feld, und konvertieren Sie es in einen numerischen Wert, indem Sie aufrufen use_facet<num_get<Char_T, InIt>(getloc).get(InIt(rdbuf), Init(0), *this, getloc, val)
. InIt
Hier ist definiert als istreambuf_iterator<Char_T, Tr>
, und val
hat Typ long
, unsigned long
, oder void *
nach Bedarf.
Wenn der konvertierte Wert nicht als Typ dargestellt val
werden kann, ruft die Funktion auf setstate(failbit)
. In jedem Fall gibt die Funktion zurück *this
. Weitere Informationen finden Sie unter setstate
.
Jede der Funktionen:
basic_istream& operator>>(float& val);
basic_istream& operator>>(double& val);
basic_istream& operator>>(long double& val);
extrahieren Sie ein Feld, und konvertieren Sie es in einen numerischen Wert, indem Sie aufrufen use_facet<num_get<Char_T, InIt>(getloc).get(InIt(rdbuf), Init(0), *this, getloc, val)
. InIt
Hier ist definiert als istreambuf_iterator<Char_T, Tr>
, und val
hat Typ double
oder long double
nach Bedarf.
Wenn der konvertierte Wert nicht als Typ dargestellt val
werden kann, ruft die Funktion auf setstate(failbit)
. In jedem Fall gibt sie *this
zurück.
Beispiel
// istream_basic_istream_op_is.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
ios_base& hex2( ios_base& ib )
{
ib.unsetf( ios_base::dec );
ib.setf( ios_base::hex );
return ib;
}
basic_istream<char, char_traits<char> >& somefunc(basic_istream<char, char_traits<char> > &i)
{
if ( i == cin )
{
cerr << "i is cin" << endl;
}
return i;
}
int main( )
{
int i = 0;
cin >> somefunc;
cin >> i;
cout << i << endl;
cin >> hex2;
cin >> i;
cout << i << endl;
}
basic_istream::operator=
Weist den basic_istream
auf der rechten Seite des Operators diesem Objekt zu. Es handelt sich um eine Verschiebungszuweisung mit einem rvalue
Verweis, der keine Kopie hinterlässt.
basic_istream& operator=(basic_istream&& right);
Parameter
right
Ein rvalue
-Verweis auf ein basic_ifstream
-Objekt.
Rückgabewert
Gibt *this
zurück.
Bemerkungen
Der Memberoperator ruft auf swap(right)
.
basic_istream::peek
Gibt das nächste zu lesende Zeichen zurück.
int_type peek();
Rückgabewert
Das nächste zu lesende Zeichen.
Bemerkungen
Die unformatierte Eingabefunktion extrahiert ggf. ein Element, wie durch zurückgeben rdbuf->sgetc
. Andernfalls wird traits_type::eof
zurückgegeben. Weitere Informationen finden Sie unter sgetc
und eof
.
Beispiel
// basic_istream_peek.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main( )
{
char c[10], c2;
cout << "Type 'abcde': ";
c2 = cin.peek( );
cin.getline( &c[0], 9 );
cout << c2 << " " << c << endl;
}
abcde
Type 'abcde': abcde
a abcde
basic_istream::putback
Schreibt ein angegebenes Zeichen in den Stream.
basic_istream<Char_T, Tr>& putback(
char_type Ch);
Parameter
Ch
Ein Zeichen, das im Stream wiederhergestellt werden soll.
Rückgabewert
Der Datenstrom (*this
).
Bemerkungen
Die unformatierte Eingabefunktion setzt Ch
, sofern möglich, wie durch Aufrufen rdbuf->sputbackc
zurück. Wenn rdbuf
es sich um einen Nullzeiger handelt oder wenn der Aufruf zurückgibt sputbackc
traits_type::eof
, ruft die Funktion auf setstate(badbit)
. In jedem Fall gibt sie *this
zurück.
Weitere Informationen finden Sie unterrdbuf
, sputbackc
, eof
und setstate
.
Beispiel
// basic_istream_putback.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main( )
{
char c[10], c2, c3;
c2 = cin.get( );
c3 = cin.get( );
cin.putback( c2 );
cin.getline( &c[0], 9 );
cout << c << endl;
}
qwq
basic_istream::read
Liest eine angegebene Anzahl von Zeichen aus dem Stream und speichert diese in einem Array.
Diese Methode ist potenziell unsicher, da sie darauf basiert, dass der Aufrufer überprüft, ob die übergebenen Werte korrekt sind.
basic_istream<Char_T, Tr>& read(
char_type* str,
streamsize count);
Parameter
str
Das Array, in dem die Zeichen gelesen werden sollen.
count
Die Anzahl der zu lesenden Zeichen.
Rückgabewert
Der Stream ( *this
).
Bemerkungen
Die nicht formatierte Eingabefunktion extrahiert elemente und speichert sie am Anfang des Arrays count
str
. Die Extraktion beendet früh am Ende der Datei, in diesem Fall wird die Funktion aufgerufen setstate(failbit)
. In jedem Fall gibt sie *this
zurück. Weitere Informationen finden Sie unter setstate
.
Beispiel
// basic_istream_read.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main()
{
char c[10];
int count = 5;
cout << "Type 'abcde': ";
// Note: cin::read is potentially unsafe, consider
// using cin::_Read_s instead.
cin.read(&c[0], count);
c[count] = 0;
cout << c << endl;
}
abcde
Type 'abcde': abcde
abcde
basic_istream::readsome
Liest die angegebene Anzahl von Zeichenwerten.
Diese Methode ist potenziell unsicher, da sie darauf basiert, dass der Aufrufer überprüft, ob die übergebenen Werte korrekt sind.
streamsize readsome(
char_type* str,
streamsize count);
Parameter
str
Das Array, in dem readsome
die gelesenen Zeichen speichert.
count
Die Anzahl der zu lesenden Zeichen.
Rückgabewert
Die Anzahl der Zeichen, die tatsächlich gelesen werden, gcount
.
Bemerkungen
Diese nicht formatierte Eingabefunktion extrahiert bis zu count
Elemente, und speichert sie in das Array str
.
Diese Funktion wartet nicht auf eingaben. Sie liest alle verfügbaren Daten.
Beispiel
// basic_istream_readsome.cpp
// compile with: /EHsc /W3
#include <iostream>
using namespace std;
int main( )
{
char c[10];
int count = 5;
cout << "Type 'abcdefgh': ";
// cin.read blocks until user types input.
// Note: cin::read is potentially unsafe, consider
// using cin::_Read_s instead.
cin.read(&c[0], 2);
// Note: cin::readsome is potentially unsafe, consider
// using cin::_Readsome_s instead.
int n = cin.readsome(&c[0], count); // C4996
c[n] = 0;
cout << n << " characters read" << endl;
cout << c << endl;
}
basic_istream::seekg
Verschiebt die Leseposition in einem Stream.
basic_istream<Char_T, Tr>& seekg(pos_type pos);
basic_istream<Char_T, Tr>& seekg(off_type off, ios_base::seekdir way);
Parameter
pos
Die absolute Position, an die der Lesezeiger verschoben werden soll.
off
Ein Offset zum Verschieben des Lesezeigers relativ zu way
.
way
Eine der ios_base::seekdir
-Enumerationen.
Rückgabewert
Der Stream (*this
).
Bemerkungen
Die erste Memberfunktion führt eine absolute, die zweite Memberfunktion eine relative Suche durch.
Hinweis
Verwenden Sie die zweite Memberfunktion nicht mit Textdateien, da Standard C++ keine relativen Suchen in Textdateien unterstützt.
Wenn ist fail
false
, ruft newpos = rdbuf->pubseekpos(pos)
die erste Memberfunktion für ein pos_type
temporäres Objekt newpos
auf. Wenn fail
ist false
, ruft die zweite Funktion die zweite Funktion auf newpos = rdbuf->pubseekoff( off, way)
. In beiden Fällen wird die Funktion aufgerufenistr.setstate(failbit)
, wenn (off_type)newpos == (off_type)(-1)
(der Positionierungsvorgang fehlschlägt). Beide Funktionen geben *this
zurück.
Wenn fail
ist, tun true
die Memberfunktionen nichts.
Weitere Informationen finden Sie unterrdbuf
, pubseekpos
, pubseekoff
und setstate
.
Beispiel
// basic_istream_seekg.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
int main ( )
{
using namespace std;
ifstream file;
char c, c1;
file.open( "basic_istream_seekg.txt" );
file.seekg(2); // seek to position 2
file >> c;
cout << c << endl;
}
basic_istream::sentry
Die geschachtelte Klasse beschreibt ein Objekt, dessen Deklaration die formatierte und unformatierte Eingabe strukturiert.
class sentry {
public:
explicit sentry(
basic_istream<Char_T, Tr>& _Istr,
bool _Noskip = false);
operator bool() const;
};
Bemerkungen
Wenn _Istr.good
es sich um den Konstruktor handelt true
:
Aufrufe
_Istr.tie->flush
, wenn_Istr.tie
kein Nullzeiger ist.Effektiv aufruft
ws(_Istr)
, wenn_Istr.flags & skipws
es sich um nichtzero handelt.
Wenn nach einer solchen Vorbereitung dies der Fall istfalse
, _Istr.good
ruft der Konstruktor auf_Istr.setstate(failbit)
. In jedem Fall speichert der Konstruktor den _Istr.good
von in status
. Ein späterer Aufruf, um operator bool
diesen gespeicherten Wert zu liefern.
Weitere Informationen finden Sie unter good
, tie
flags
skipws
flush
ws
und .setstate
basic_istream::swap
Tauscht den Inhalt von zwei basic_istream
-Objekten aus.
void swap(basic_istream& right);
Parameter
right
Ein lvalue
-Verweis auf ein basic_istream
-Objekt.
Bemerkungen
Die Memberfunktion ruft basic_ios::swap(right)
. Sie tauscht außerdem die Extraktionsanzahl mit der Extraktionsanzahl für right
aus. Weitere Informationen finden Sie unter basic_ios::swap
.
basic_istream::sync
Synchronisiert das zugeordnete Eingabegerät des Datenstroms mit dem Puffer des Datenstroms.
int sync();
Rückgabewert
Wenn rdbuf
es sich um einen Nullzeiger handelt, gibt die Funktion -1 zurück. Andernfalls ruft es an rdbuf->pubsync
. Wenn dieser Aufruf -1 zurückgibt, ruft setstate(badbit)
die Funktion -1 auf und gibt -1 zurück. Andernfalls wird von der Funktion null zurückgegeben. Weitere Informationen finden Sie unter pubsync
und setstate
.
basic_istream::tellg
Meldet die aktuelle Leseposition im Stream.
pos_type tellg();
Rückgabewert
Die aktuelle Position in dem Stream.
Bemerkungen
Wenn fail
ist false
, gibt die Memberfunktion zurück rdbuf->pubseekoff(0, cur, in)
. Andernfalls wird pos_type(-1)
zurückgegeben. Weitere Informationen finden Sie unter rdbuf
und pubseekoff
.
Beispiel
// basic_istream_tellg.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
int main()
{
using namespace std;
ifstream file;
char c;
streamoff i;
file.open("basic_istream_tellg.txt");
i = file.tellg();
file >> c;
cout << c << " " << i << endl;
i = file.tellg();
file >> c;
cout << c << " " << i << endl;
}
basic_istream::unget
Schreibt das zuletzt gelesene Zeichen zurück in den Stream.
basic_istream<Char_T, Tr>& unget();
Rückgabewert
Der Stream (*this
).
Bemerkungen
Die nicht formatierte Eingabefunktion legt das vorherige Element im Datenstrom, sofern möglich, zurück, wie durch Aufrufen rdbuf->sungetc
rdbuf
eines Nullzeigers oder wenn der Aufruf zurückgegeben sungetc
traits_type::eof
werden soll, wird die Funktion aufgerufen setstate(badbit)
. In jedem Fall gibt sie *this
zurück.
Weitere Informationen finden Sie unter sungetc
, eof
und setstate
. Weitere Informationen zum unget
Fehler finden Sie unter basic_streambuf::sungetc
.
Beispiel
// basic_istream_unget.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main( )
{
char c[10], c2;
cout << "Type 'abc': ";
c2 = cin.get( );
cin.unget( );
cin.getline( &c[0], 9 );
cout << c << endl;
}
abc
Type 'abc': abc
abc
Siehe auch
Threadsicherheit in der C++-Standardbibliothek
iostream
Programmierung
iostreams
Konventionen