basic_istream Klasa

Opisuje obiekt, który kontroluje wyodrębnianie elementów i zakodowanych obiektów z buforu strumienia z elementami typu Char_T, znanymi również jako char_type, których cechy znaków są określane przez klasę Tr, znaną również jako traits_type.

Składnia

template <class Char_T, class Tr = char_traits<Char_T>>
class basic_istream : virtual public basic_ios<Char_T, Tr>

Uwagi

Większość funkcji składowych, które przeciążają operator>> , są sformatowanymi funkcjami wejściowymi. Są zgodne ze wzorcem:

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

Wiele innych funkcji składowych jest niesformatowanych funkcji wejściowych. Są zgodne ze wzorcem:

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

Obie grupy funkcji są wywoływane setstate(eofbit) , jeśli napotkają koniec pliku podczas wyodrębniania elementów. W celu uzyskania więcej informacji, zobacz następujący temat: setstate.

Obiekt magazynów klas basic_istream<Char_T, Tr> :

  • Wirtualny obiekt bazy publicznej klasy basic_ios<Char_T, Tr>. W celu uzyskania więcej informacji, zobacz następujący temat: basic_ios.

  • Liczba wyodrębnień dla ostatniej niesformatowanej operacji wejściowej (wywoływana count w poprzednim kodzie).

Przykład

Zobacz przykład dla basic_ifstream klasy , aby dowiedzieć się więcej o strumieniach wejściowych.

Konstruktory

Konstruktor opis
basic_istream Tworzy obiekt typu basic_istream.

Funkcje składowe

Funkcja składowa opis
gcount Zwraca liczbę znaków odczytanych podczas ostatnich niesformatowanych danych wejściowych.
get Odczytuje jeden lub więcej znaków ze strumienia wejściowego.
getline Odczytuje wiersz ze strumienia wejściowego.
ignore Powoduje pominięcie kilku elementów z bieżącej pozycji odczytu.
peek Zwraca następny znak do odczytania.
putback Umieszcza określony znak w strumieniu.
read Odczytuje określoną liczbę znaków ze strumienia i zapisuje je w tablicy.
readsome Odczyt tylko z buforu.
seekg Przenosi pozycję odczytu w strumieniu.
sentry Klasa zagnieżdżona opisuje obiekt, którego deklaracja tworzy sformatowane funkcje wejściowe i niesformatowane funkcje wejściowe.
swap Wymienia ten basic_istream obiekt dla podanego basic_istream parametru obiektu.
sync Synchronizuje skojarzone urządzenie wejściowe strumienia z buforem strumienia.
tellg Raportuje bieżącą pozycję odczytu w strumieniu.
unget Umieszcza ostatnio odczytany znak z powrotem do strumienia.

Operatory

Operator opis
operator>> Wywołuje funkcję w strumieniu wejściowym lub odczytuje sformatowane dane ze strumienia wejściowego.
operator= Przypisuje operatorowi basic_istream po prawej stronie operatora do tego obiektu. Jest to przypisanie przenoszenia obejmujące rvalue odwołanie, które nie pozostawia kopii.

Wymagania

Nagłówka:<istream>

Obszaru nazw:std

basic_istream::basic_istream

Tworzy obiekt typu basic_istream.

explicit basic_istream(
    basic_streambuf<Char_T, Tr>* strbuf,
    bool _Isstd = false);

basic_istream(basic_istream&& right);

Parametry

strbuf
Obiekt typu basic_streambuf.

_Isstd
true jeśli jest to standardowy strumień; w przeciwnym razie, false.

right
basic_istream Obiekt do skopiowania.

Uwagi

Pierwszy konstruktor inicjuje klasę bazową, wywołując metodę init(strbuf). Przechowuje również zero w liczbie wyodrębniania. W celu uzyskania więcej informacji, zobacz następujący temat: init. Aby uzyskać więcej informacji na temat tej liczby wyodrębniania, zobacz sekcję Uwagi w basic_istream przeglądu klasy .

Drugi konstruktor inicjuje klasę bazową, wywołując metodę move(right). Przechowuje również right.gcount() w liczbie wyodrębniania i przechowuje zero w liczbie wyodrębniania dla right.

Przykład

Zobacz przykład, basic_ifstream::basic_ifstream aby dowiedzieć się więcej o strumieniach wejściowych.

basic_istream::gcount

Zwraca liczbę znaków odczytanych podczas ostatnich niesformatowanych danych wejściowych.

streamsize gcount() const;

Wartość zwracana

Liczba wyodrębnień.

Uwagi

Służy basic_istream::get do odczytywania niesformatowanych znaków.

Przykład

// 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

Odczytuje jeden lub więcej znaków ze strumienia wejściowego.

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

Parametry

count
Liczba znaków do odczytania z pliku strbuf.

delimiter
Znak, który powinien zakończyć odczyt, jeśli napotkano go przed count.

str
Ciąg, w którym ma być zapisywany.

Ch
Znak, który ma być uzyskiwany.

strbuf
Bufor, w którym ma być zapisywany.

Wartość zwracana

Postać bez parametrów get zwraca element odczytany jako liczba całkowita lub koniec pliku. Pozostałe formularze zwracają strumień (*this).

Uwagi

Pierwsza niesformatowana funkcja wejściowa wyodrębnia element, jeśli to możliwe, tak jakby zwracał rdbuf->sbumpcwartość . W przeciwnym razie zwraca wartość traits_type::eof. Jeśli funkcja nie wyodrębnia żadnego elementu, wywołuje metodę setstate(failbit). W celu uzyskania więcej informacji, zobacz następujący temat: setstate.

Druga funkcja wyodrębnia int_type element meta w taki sam sposób. Jeśli meta funkcja porównuje wartość równą traits_type::eof, funkcja wywołuje metodę setstate(failbit). W przeciwnym razie przechowuje traits_type::to_char_type(meta) w pliku Ch. Funkcja zwraca *thiswartość . W celu uzyskania więcej informacji, zobacz następujący temat: to_char_type.

Trzecia funkcja zwraca wartość get(str, count, widen('\n')).

Czwarta funkcja wyodrębnia do count - 1 elementów i przechowuje je w tablicy rozpoczynającej się od str. Zawsze przechowuje char_type wszystkie wyodrębnione elementy, które przechowuje. W kolejności testowania wyodrębnianie zatrzymuje się:

  • Na końcu pliku.

  • Po wyodrębnieniu przez funkcję elementu, który porównuje element równy delimiter. W takim przypadku element jest umieszczany z powrotem w kontrolowanej sekwencji.

  • Po wyodrębnieniu elementów przez funkcję count - 1 .

Jeśli funkcja nie wyodrębnia żadnych elementów, wywołuje metodę setstate(failbit). W każdym razie zwraca wartość *this.

Piąta funkcja zwraca wartość get(strbuf, widen('\n')).

Szósta funkcja wyodrębnia elementy i wstawia je w pliku strbuf. Wyodrębnianie zatrzymuje się na końcu pliku lub na elemecie, który porównuje wartość równą delimiter, która nie jest wyodrębniona. Zatrzymuje się również bez wyodrębniania elementu, o którym mowa, jeśli wstawienie nie powiedzie się lub zgłosi wyjątek (który zostanie przechwycony, ale nie zostanie ponownie wroniony). Jeśli funkcja nie wyodrębnia żadnych elementów, wywołuje metodę setstate(failbit). W każdym razie funkcja zwraca *thiswartość .

Przykład

// 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

Pobiera wiersz ze strumienia wejściowego.

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

Parametry

count
Liczba znaków do odczytania z pliku strbuf.

delimiter
Znak, który powinien zakończyć odczyt, jeśli napotkano go przed count.

str
Ciąg, w którym ma być zapisywany.

Wartość zwracana

Strumień (*this).

Uwagi

Pierwsza z tych niesformatowanych funkcji wejściowych zwraca wartość getline(str, count, widen('\n')).

Druga funkcja wyodrębnia do count - 1 elementów i przechowuje je w tablicy rozpoczynającej się od str. Zawsze przechowuje znak zakończenia ciągu po wyodrębnionych elementach, które przechowuje. W kolejności testowania wyodrębnianie zatrzymuje się:

  • Na końcu pliku.

  • Po wyodrębnieniu przez funkcję elementu, który porównuje element równy delimiter. W takim przypadku element nie jest umieszczany z powrotem i nie jest dołączany do kontrolowanej sekwencji.

  • Po wyodrębnieniu elementów przez funkcję count - 1 .

Jeśli funkcja nie wyodrębnia żadnych elementów ani count - 1 elementów, wywołuje funkcję setstate(failbit). W każdym razie zwraca wartość *this. W celu uzyskania więcej informacji, zobacz następujący temat: setstate.

Przykład

// 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

Powoduje pominięcie kilku elementów z bieżącej pozycji odczytu.

basic_istream<Char_T, Tr>& ignore(
    streamsize count = 1,
    int_type delimiter = traits_type::eof());

Parametry

count
Liczba elementów do pominięcia z bieżącej pozycji odczytu.

delimiter
Element, który, jeśli napotkano przed liczbą, powoduje ignore zwrócenie i zezwolenie na odczytywanie wszystkich elementów.delimiter

Wartość zwracana

Strumień (*this).

Uwagi

Niesformatowana funkcja wejściowa wyodrębnia do count elementów i odrzuca je. Jeśli count jednak wartość jest równa numeric_limits<int>::max, jest ona traktowana jako dowolnie duża. Wyodrębnianie zatrzymuje się wcześnie na końcu pliku lub na elemecie Ch , który traits_type::to_int_type(Ch) porównuje wartość równą delimiter (która jest również wyodrębniona). Funkcja zwraca *thiswartość . W celu uzyskania więcej informacji, zobacz następujący temat: to_int_type.

Przykład

// 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>>

Wywołuje funkcję w strumieniu wejściowym lub odczytuje sformatowane dane ze strumienia wejściowego.

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

Parametry

Pfn
Wskaźnik funkcji.

strbuf
Obiekt typu stream_buf.

val
Wartość do odczytu ze strumienia.

Wartość zwracana

Strumień (*this).

Uwagi

Nagłówek <istream> definiuje również kilka globalnych operatorów wyodrębniania. W celu uzyskania więcej informacji, zobacz następujący temat: operator>> (\<istream>).

Pierwsza funkcja składowa gwarantuje, że wyrażenie formularza istr >> ws wywołuje ws(istr)metodę , a następnie zwraca wartość *this. W celu uzyskania więcej informacji, zobacz następujący temat: ws.

Druga i trzecia funkcja zapewnia, że inne manipulatory, takie jak hex, zachowują się podobnie. Pozostałe funkcje to sformatowane funkcje wejściowe.

Funkcja:

basic_istream& operator>>(
    basic_streambuf<Char_T, Tr>* strbuf);

wyodrębnia elementy, jeśli strbuf nie jest wskaźnikiem o wartości null i wstawia je w elemecie strbuf. Wyodrębnianie zatrzymuje się na końcu pliku. Zatrzymuje się również bez wyodrębniania danego elementu, jeśli wstawienie nie powiedzie się lub zgłosi wyjątek (który zostanie przechwycony, ale nie zostanie ponownie dodany). Jeśli funkcja nie wyodrębnia żadnych elementów, wywołuje metodę setstate(failbit). W każdym razie funkcja zwraca *thiswartość . W celu uzyskania więcej informacji, zobacz następujący temat: setstate.

Funkcja:

basic_istream& operator>>(bool& val);

wyodrębnia pole i konwertuje je na wartość logiczną przez wywołanie metody use_facet< num_get<Char_T, InIt>(getloc).get( InIt(rdbuf), Init(0), *this, getloc, val). InIt W tym miejscu element jest zdefiniowany jako istreambuf_iterator<Char_T, Tr>. Funkcja zwraca *thiswartość .

Aby uzyskać więcej informacji, zobacz use_facet, , getlocget, rdbuf, i istreambuf_iterator.

Każda z funkcji:

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

wyodrębnij pole i przekonwertuj je na wartość liczbową przez wywołanie metody use_facet<num_get<Char_T, InIt>(getloc).get(InIt(rdbuf), Init(0), *this, getloc, val). InIt W tym miejscu element jest zdefiniowany jako istreambuf_iterator<Char_T, Tr>, i val ma typ long, unsigned longlub void * zgodnie z potrzebami.

Jeśli przekonwertowana wartość nie może być reprezentowana jako typ val, funkcja wywołuje metodę setstate(failbit). W każdym razie funkcja zwraca *thiswartość . W celu uzyskania więcej informacji, zobacz następujący temat: setstate.

Każda z funkcji:

basic_istream& operator>>(float& val);
basic_istream& operator>>(double& val);
basic_istream& operator>>(long double& val);

wyodrębnij pole i przekonwertuj je na wartość liczbową przez wywołanie metody use_facet<num_get<Char_T, InIt>(getloc).get(InIt(rdbuf), Init(0), *this, getloc, val). InIt W tym miejscu element jest zdefiniowany jako istreambuf_iterator<Char_T, Tr>, i val ma typ double lub long double zgodnie z potrzebami.

Jeśli przekonwertowana wartość nie może być reprezentowana jako typ val, funkcja wywołuje metodę setstate(failbit). W każdym razie zwraca wartość *this.

Przykład

// 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=

Przypisuje operatorowi basic_istream po prawej stronie operatora do tego obiektu. Jest to przypisanie przenoszenia obejmujące rvalue odwołanie, które nie pozostawia kopii.

basic_istream& operator=(basic_istream&& right);

Parametry

right
Odwołanie rvalue do basic_ifstream obiektu.

Wartość zwracana

Zwraca wartość *this.

Uwagi

Operator elementu członkowskiego wywołuje metodę swap(right).

basic_istream::peek

Zwraca następny znak do odczytania.

int_type peek();

Wartość zwracana

Następny znak, który zostanie odczytany.

Uwagi

Niesformatowana funkcja wejściowa wyodrębnia element, jeśli to możliwe, tak jakby zwracał rdbuf->sgetcwartość . W przeciwnym razie zwraca wartość traits_type::eof. Aby uzyskać więcej informacji, zobacz tematy sgetc oraz eof.

Przykład

// 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

Umieszcza określony znak w strumieniu.

basic_istream<Char_T, Tr>& putback(
    char_type Ch);

Parametry

Ch
Znak, który ma być umieszczony z powrotem w strumieniu.

Wartość zwracana

Strumień (*this).

Uwagi

Niesformatowana funkcja wejściowa przywraca Chfunkcję , jeśli to możliwe, tak jak w przypadku wywołania metody rdbuf->sputbackc. Jeśli rdbuf jest wskaźnikiem o wartości null lub jeśli wywołanie sputbackc zwraca traits_type::eofwartość , funkcja wywołuje metodę setstate(badbit). W każdym razie zwraca wartość *this.

Aby uzyskać więcej informacji, zobacz rdbuf, sputbackc, eofi setstate.

Przykład

// 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

Odczytuje określoną liczbę znaków ze strumienia i zapisuje je w tablicy.

Ta metoda jest potencjalnie niebezpieczna, ponieważ opiera się na obiekcie wywołującym, aby sprawdzić, czy przekazane wartości są poprawne.

basic_istream<Char_T, Tr>& read(
    char_type* str,
    streamsize count);

Parametry

str
Tablica, w której mają być odczytywane znaki.

count
Liczba znaków do odczytania.

Wartość zwracana

Strumień ( *this).

Uwagi

Niesformatowana funkcja wejściowa wyodrębnia do count elementów i przechowuje je w tablicy rozpoczynającej się od str. Wyodrębnianie zatrzymuje się wcześnie na końcu pliku, w tym przypadku funkcja wywołuje setstate(failbit)funkcję . W każdym razie zwraca wartość *this. W celu uzyskania więcej informacji, zobacz następujący temat: setstate.

Przykład

// 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

Odczytuje określoną liczbę wartości znaków.

Ta metoda jest potencjalnie niebezpieczna, ponieważ opiera się na obiekcie wywołującym, aby sprawdzić, czy przekazane wartości są poprawne.

streamsize readsome(
    char_type* str,
    streamsize count);

Parametry

str
Tablica, w której readsome przechowuje odczytywane znaki.

count
Liczba znaków do odczytania.

Wartość zwracana

Liczba znaków faktycznie odczytanych: gcount.

Uwagi

Ta niesformatowana funkcja wejściowa wyodrębnia count elementy ze strumienia wejściowego i przechowuje je w tablicy str.

Ta funkcja nie czeka na dane wejściowe. Odczytuje wszystkie dostępne dane.

Przykład

// 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

Przenosi pozycję odczytu w strumieniu.

basic_istream<Char_T, Tr>& seekg(pos_type pos);

basic_istream<Char_T, Tr>& seekg(off_type off, ios_base::seekdir way);

Parametry

pos
Położenie bezwzględne, w którym ma być przeniesiony wskaźnik odczytu.

off
Przesunięcie w celu przeniesienia wskaźnika odczytu względem wayelementu .

way
Jeden z ios_base::seekdir wyliczeń.

Wartość zwracana

Strumień (*this).

Uwagi

Pierwsza funkcja składowa wykonuje wyszukiwanie bezwzględne, druga funkcja składowa wykonuje względne wyszukiwanie.

Uwaga

Nie używaj drugiej funkcji składowej z plikami tekstowymi, ponieważ język Standard C++ nie obsługuje wyszukiwania względnego w plikach tekstowych.

Jeśli fail parametr to false, pierwsza funkcja składowa wywołuje newpos = rdbuf->pubseekpos(pos)element , dla jakiegoś pos_type obiektu newpostymczasowego . Jeśli fail parametr to false, druga funkcja wywołuje metodę newpos = rdbuf->pubseekoff( off, way). W obu przypadkach, jeśli (off_type)newpos == (off_type)(-1) (operacja pozycjonowania kończy się niepowodzeniem), funkcja wywołuje funkcję istr.setstate(failbit). Obie funkcje zwracają wartość *this.

Jeśli fail element to true, funkcje składowe nic nie robią.

Aby uzyskać więcej informacji, zobacz rdbuf, pubseekpos, pubseekoffi setstate.

Przykład

// 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

Klasa zagnieżdżona opisuje obiekt, którego deklaracja tworzy sformatowane i niesformatowane funkcje wejściowe.

class sentry {
   public:
   explicit sentry(
      basic_istream<Char_T, Tr>& _Istr,
      bool _Noskip = false);
   operator bool() const;
   };

Uwagi

Jeśli _Istr.good ma truewartość , konstruktor:

  • Wywołuje _Istr.tie->flush metodę , jeśli _Istr.tie nie jest wskaźnikiem o wartości null.

  • Skutecznie wywołuje ws(_Istr) metodę , jeśli _Istr.flags & skipws jest niezerowa.

Jeśli po jakichkolwiek takich przygotowaniach , _Istr.goodfalsekonstruktor wywołuje ._Istr.setstate(failbit) W każdym razie konstruktor przechowuje wartość zwracaną przez _Istr.good element w pliku status. Późniejsze wywołanie do operator bool dostarcza tę przechowywaną wartość.

Aby uzyskać więcej informacji, zobacz good, , tie, flush, wsflags, , skipws, i setstate.

basic_istream::swap

Wymienia zawartość dwóch basic_istream obiektów.

void swap(basic_istream& right);

Parametry

right
Odwołanie lvalue do basic_istream obiektu.

Uwagi

Funkcja składowa wywołuje funkcję basic_ios::swap(right). Wymienia również liczbę wyodrębnień z liczbą wyodrębnień dla rightelementu . W celu uzyskania więcej informacji, zobacz następujący temat: basic_ios::swap.

basic_istream::sync

Synchronizuje skojarzone urządzenie wejściowe strumienia z buforem strumienia.

int sync();

Wartość zwracana

Jeśli rdbuf jest wskaźnikiem o wartości null, funkcja zwraca wartość -1. W przeciwnym razie wywołuje metodę rdbuf->pubsync. Jeśli to wywołanie zwraca wartość -1, funkcja wywołuje setstate(badbit) i zwraca wartość -1. W przeciwnym razie funkcja zwraca zero. Aby uzyskać więcej informacji, zobacz tematy pubsync oraz setstate.

basic_istream::tellg

Raportuje bieżącą pozycję odczytu w strumieniu.

pos_type tellg();

Wartość zwracana

Bieżące położenie w strumieniu.

Uwagi

Jeśli fail parametr ma falsewartość , funkcja składowa zwraca wartość rdbuf->pubseekoff(0, cur, in). W przeciwnym razie zwraca wartość pos_type(-1). Aby uzyskać więcej informacji, zobacz tematy rdbuf oraz pubseekoff.

Przykład

// 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

Umieszcza ostatnio odczytany znak z powrotem do strumienia.

basic_istream<Char_T, Tr>& unget();

Wartość zwracana

Strumień (*this).

Uwagi

Niesformatowana funkcja wejściowa przywraca poprzedni element w strumieniu, jeśli to możliwe, tak jak wywołanie rdbuf->sungetc metody If rdbuf jest wskaźnikiem o wartości null lub jeśli wywołanie sungetc zwraca traits_type::eoffunkcję , funkcja wywołuje metodę setstate(badbit). W każdym razie zwraca wartość *this.

Aby uzyskać więcej informacji, zobacz tematy sungetc, eof oraz setstate. Aby uzyskać informacje na temat tego, jak unget może się nie powieść, zobacz basic_streambuf::sungetc.

Przykład

// 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

Zobacz też

Bezpieczeństwo wątku w standardowej bibliotece C++
iostream Programowania
iostreams Konwencje