Freigeben über


basic_istream-Klasse

Beschreibt ein Objekt, das die Extraktion von Elementen und codierten Objekten aus einem Datenstrompuffer mit Elementen vom Typ Char_Tsteuert, auch bekannt als char_type, deren Zeicheneigenschaften durch die Klasse Trbestimmt 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 unter basic_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
truewenn 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 countaufgetreten 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::eofzurü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 strdes 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 delimiterist, 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 countaufgetreten 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 strdes 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 strbufein. 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 longoder void * istreambuf_iterator<Char_T, Tr>nach Bedarf.

Wenn der konvertierte Wert nicht als Typ valdargestellt 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 valdargestellt 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::eofzurü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 Chdurch Aufrufen zurück rdbuf->sputbackc. Wenn rdbuf es sich um einen NULL-Zeiger handelt oder wenn der zurückgibtde sputbackc traits_type::eofAufruf, wird die Funktion aufgerufen setstate(badbit). In jedem Fall gibt sie *this zurück.

Weitere Informationen finden Sie unterrdbuf, sputbackc, eofund 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 strdes 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 falseder Grund, ruft die erste Memberfunktion für ein temporäres pos_type Objekt newposaufnewpos = rdbuf->pubseekpos(pos). Ist fail dies der falseGrund, 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 trueder Grund, führen die Memberfunktionen nichts aus.

Weitere Informationen finden Sie unterrdbuf, pubseekpos, pubseekoffund 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 falseder 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, skipwsund 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 falseder 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::eofwird, 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