basic_istream-Klasse

Beschreibt ein Objekt, das die Extraktion von Elementen und codierten Objekten aus einem Datenstrompuffer mit Elementen des Typs Char_Tsteuert, auch bekannt als , char_typedessen Zeicheneigenschaften von der 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>

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 unter basic_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 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 () 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::eofist, 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 - 1str. 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 delimiterist. 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 countder 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>::maxjedoch 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 >> wsws(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 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.

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, , getgetloc, rdbufund 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 valwerden 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 valwerden 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::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).

Bemerkungen

Die unformatierte Eingabefunktion setzt Ch, sofern möglich, wie durch Aufrufen rdbuf->sputbackczurück. Wenn rdbuf es sich um einen Nullzeiger handelt oder wenn der Aufruf zurückgibt sputbackctraits_type::eof, ruft die Funktion auf 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).

Bemerkungen

Die nicht formatierte Eingabefunktion extrahiert elemente und speichert sie am Anfang des Arrays countstr. 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 failfalse, ruft newpos = rdbuf->pubseekpos(pos)die erste Memberfunktion für ein pos_type temporäres Objekt newposauf. 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 truedie Memberfunktionen nichts.

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

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, tieflagsskipwsflushwsund .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->sungetcrdbuf eines Nullzeigers oder wenn der Aufruf zurückgegeben sungetctraits_type::eofwerden 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