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. Aby uzyskać więcej informacji, zobacz setstate
.
Obiekt magazynów klas basic_istream<Char_T, Tr>
:
Wirtualny obiekt bazy publicznej klasy
basic_ios<Char_T, Tr>
. Aby uzyskać więcej informacji, zobaczbasic_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łówek: <istream>
Przestrzeń 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. Aby uzyskać więcej informacji, zobacz 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->sbumpc
wartość . W przeciwnym razie zwraca wartość traits_type::
eof
. Jeśli funkcja nie wyodrębnia żadnego elementu, wywołuje metodę setstate(failbit)
. Aby uzyskać więcej informacji, zobacz 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 *this
wartość . Aby uzyskać więcej informacji, zobacz 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 *this
wartość .
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
. Aby uzyskać więcej informacji, zobacz 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 *this
wartość . Aby uzyskać więcej informacji, zobacz 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. Aby uzyskać więcej informacji, zobacz operator>> (\<istream>)
.
Pierwsza funkcja składowa gwarantuje, że wyrażenie formularza istr >> ws
wywołuje ws(istr)
metodę , a następnie zwraca wartość *this
. Aby uzyskać więcej informacji, zobacz 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 *this
wartość . Aby uzyskać więcej informacji, zobacz 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 *this
wartość .
Aby uzyskać więcej informacji, zobacz use_facet
, , getloc
get
, 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 long
lub 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 *this
wartość . Aby uzyskać więcej informacji, zobacz 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->sgetc
wartość . 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 Ch
funkcję , 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::eof
wartość , funkcja wywołuje metodę setstate(badbit)
. W każdym razie zwraca wartość *this
.
Aby uzyskać więcej informacji, zobacz rdbuf
, sputbackc
, eof
i 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
. Aby uzyskać więcej informacji, zobacz 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 way
elementu .
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 newpos
tymczasowego . 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
, pubseekoff
i 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 true
wartość , 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.good
false
konstruktor 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
, ws
flags
, , 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 right
elementu . Aby uzyskać więcej informacji, zobacz 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 false
wartość , 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::eof
funkcję , 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
Programowanie
iostreams
Konwencje