basic_istream
-Klasse
Beschreibt ein Objekt, das die Extraktion von Elementen und codierten Objekten aus einem Datenstrompuffer mit Elementen vom Typ Char_T
steuert, auch bekannt als char_type
, deren Zeicheneigenschaften durch die 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>
Hinweise
Die meisten Memberfunktionen, die überladen operator>>
sind, sind 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 Funktionsgruppen rufen auf setstate(eofbit)
, wenn beim Extrahieren von Elementen das Dateiende auftritt. 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 unformatierten Eingabevorgang (im vorherigen Code aufgerufen
count
).
Beispiel
Weitere Informationen zu Eingabedatenströmen finden Sie im Beispiel für basic_ifstream
"Class ".
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. |
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.
Hinweise
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" der basic_istream
Klassenübersicht.
Der zweite Konstruktor initialisiert die Basisklasse durch Aufrufen von move(right)
. Sie speichert right.gcount()
auch in der Extraktionsanzahl und speichert null in der Extraktionsanzahl für right
.
Beispiel
Weitere Informationen zu Eingabedatenströmen 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.
Hinweise
Wird verwendet basic_istream::get
, um unformatierte Zeichen zu lesen.
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 soll, 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 (*this
) zurück.
Hinweise
Die erste unformatierte Eingabefunktion extrahiert nach Möglichkeit ein Element, als wäre es 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 die gleiche Weise. Wenn meta
gleich ist traits_type::eof
, ruft die Funktion auf setstate(failbit)
. Andernfalls speichert traits_type::to_char_type(meta)
sie 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 bis zu count - 1
Elementen und speichert sie am Anfang str
des Arrays. 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 hat, das gleich ist
delimiter
. 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, wird sie aufgerufen 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 dem wert delimiter
ist, der 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 vorher count
aufgetreten ist.
str
Eine Zeichenfolge, in die geschrieben werden soll.
Rückgabewert
Der Datenstrom (*this
).
Hinweise
Die erste dieser unformatierten Eingabefunktionen gibt zurück getline(str, count, widen('\n'))
.
Die zweite Funktion extrahiert bis zu count - 1
Elementen und speichert sie am Anfang str
des Arrays. 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ückgesetzt, 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, falls vor der Zählung aufgetreten, zurückgibt ignore
und alle Elemente nach delimiter
dem Lesen zulässt.
Rückgabewert
Der Datenstrom (*this
).
Hinweise
Die unformatierte Eingabefunktion extrahiert bis zu count
Elemente und verwirft sie. Wenn count
dies jedoch gleich ist numeric_limits<int>::max
, wird sie beliebig groß genommen. Die Extraktion stoppt früh am Ende der Datei oder auf einem Element Ch
, das traits_type::to_int_type(Ch)
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 des Typs stream_buf
.
val
Der Wert, der aus dem Stream gelesen werden soll.
Rückgabewert
Der Datenstrom (*this
).
Hinweise
Der Header <istream>
definiert außerdem mehrere globale Extraktionsoperatoren. Weitere Informationen finden Sie unter operator>> (\<istream>)
.
Die erste Memberfunktion stellt sicher, dass ein Ausdruck des Formulars istr >> ws
aufgerufen ws(istr)
wird und dann zurückgegeben wird *this
. Weitere Informationen finden Sie unter ws
.
Die zweite und dritte Funktion stellen sicher, dass sich andere Manipulatoren, z hex
. B. , ähnlich verhalten. Die übrigen Funktionen sind die formatierten Eingabefunktionen.
Mit der Funktion werden folgende Aktionen ausgeführt:
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
.
Mit der Funktion werden folgende Aktionen ausgeführt:
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
, getloc
, get
, 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 durch Aufrufen use_facet<num_get<Char_T, InIt>(getloc).get(InIt(rdbuf), Init(0), *this, getloc, val)
in einen numerischen Wert. Hier ist definiert als , InIt
und val
hat Typ long
, , unsigned long
oder void *
istreambuf_iterator<Char_T, Tr>
nach Bedarf.
Wenn der konvertierte Wert nicht als Typ val
dargestellt werden kann, wird die Funktion aufgerufen 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 durch Aufrufen use_facet<num_get<Char_T, InIt>(getloc).get(InIt(rdbuf), Init(0), *this, getloc, val)
in einen numerischen Wert. 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 val
dargestellt werden kann, wird die Funktion aufgerufen 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.
Hinweise
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.
Hinweise
Die unformatierte Eingabefunktion extrahiert nach Möglichkeit ein Element, als wäre es 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
).
Hinweise
Die unformatierte Eingabefunktion setzt , wenn möglich, wie Ch
durch Aufrufen zurück rdbuf->sputbackc
. Wenn rdbuf
es sich um einen NULL-Zeiger handelt oder wenn der zurückgibtde sputbackc
traits_type::eof
Aufruf, wird die Funktion aufgerufen 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
).
Hinweise
Die unformatierte Eingabefunktion extrahiert bis zu count
Elementen und speichert sie am Anfang str
des Arrays. Die Extraktion wird früh am Ende der Datei beendet, in diesem Fall ruft die Funktion auf 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
.
Hinweise
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 Datenstrom (*this
).
Hinweise
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.
Ist fail
dies false
der Grund, ruft die erste Memberfunktion für ein temporäres pos_type
Objekt newpos
aufnewpos = rdbuf->pubseekpos(pos)
. Ist fail
dies der false
Grund, ruft die zweite Funktion auf newpos = rdbuf->pubseekoff( off, way)
. Wenn (der Positionierungsvorgang fehlschlägt) ruft die Funktion in beiden Fällen (off_type)newpos == (off_type)(-1)
auf istr.setstate(failbit)
. Beide Funktionen geben *this
zurück.
Ist fail
dies true
der Grund, führen die Memberfunktionen nichts aus.
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;
};
Hinweise
Wenn _Istr.good
ja true
, lautet der Konstruktor:
Aufrufe
_Istr.tie->flush
, wenn_Istr.tie
es sich nicht um einen Nullzeiger handelt.Ruft effektiv auf
ws(_Istr)
, wenn_Istr.flags & skipws
es sich um nonzero handelt.
Wenn eine solche Vorbereitung erfolgt, _Istr.good
ruft false
der Konstruktor auf _Istr.setstate(failbit)
. In jedem Fall speichert der Konstruktor den von _Istr.good
in status
. Ein späterer Aufruf, um diesen gespeicherten Wert zu operator bool
liefern.
Weitere Informationen finden Sie unter good
, tie
, flush
, ws
, flags
, skipws
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.
Hinweise
Die Memberfunktion ruft auf 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 wird es aufgerufen rdbuf->pubsync
. Wenn dieser Aufruf -1 zurückgibt, ruft die Funktion -1 auf setstate(badbit)
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.
Hinweise
Ist fail
dies false
der Wert, 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 Datenstrom (*this
).
Hinweise
Die unformatierte Eingabefunktion gibt das vorherige Element im Datenstrom zurück, wenn möglich, wie durch Aufrufen rdbuf->sungetc
rdbuf
eines Nullzeigers oder wenn der Aufruf zurückgegeben sungetc
traits_type::eof
wird, ruft die Funktion auf setstate(badbit)
. In jedem Fall gibt sie *this
zurück.
Weitere Informationen finden Sie unter sungetc
, eof
und setstate
. Informationen dazu, wie unget
fehlschlagen kann, 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
Programmieren
iostreams
Konventionen