basic_istream
Třída
Popisuje objekt, který řídí extrakci prvků a kódované objekty z vyrovnávací paměti datového proudu s prvky typu Char_T
, také známý jako char_type
, jehož znak vlastnosti jsou určeny třídou Tr
, také známé jako traits_type
.
Syntaxe
template <class Char_T, class Tr = char_traits<Char_T>>
class basic_istream : virtual public basic_ios<Char_T, Tr>
Poznámky
Většina členských funkcí, které přetíží operator>>
, jsou formátované vstupní funkce. Řídí se vzorem:
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);
Mnoho dalších členských funkcí je neformátovaných vstupních funkcí. Řídí se vzorem:
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);
Obě skupiny funkcí volají setstate(eofbit)
, pokud při extrahování prvků narazí na konec souboru. Další informace najdete na webu setstate
.
Objekt úložišť tříd basic_istream<Char_T, Tr>
:
Virtuální veřejný základní objekt třídy
basic_ios<Char_T, Tr>
. Další informace najdete na webubasic_ios
.Počet extrakce poslední neformátované vstupní operace (volaný
count
v předchozím kódu).
Příklad
Další informace o vstupních datových proudech najdete v příkladu třídybasic_ifstream
.
Konstruktory
Konstruktor | Popis |
---|---|
basic_istream |
Vytvoří objekt typu basic_istream . |
Členské funkce
Členová funkce | Popis |
---|---|
gcount |
Vrátí počet znaků přečtených během posledního neformátovaného vstupu. |
get |
Přečte jeden nebo více znaků ze vstupního datového proudu. |
getline |
Načte řádek ze vstupního datového proudu. |
ignore |
Způsobí vynechání několika prvků z aktuální pozice čtení. |
peek |
Vrátí další znak, který se má přečíst. |
putback |
Vloží zadaný znak do datového proudu. |
read |
Přečte zadaný počet znaků z datového proudu a uloží je do pole. |
readsome |
Čtení pouze z vyrovnávací paměti. |
seekg |
Přesune pozici čtení v datovém proudu. |
sentry |
Vnořená třída popisuje objekt, jehož deklarace strukturuje formátované vstupní funkce a neformátované vstupní funkce. |
swap |
Vymění tento basic_istream objekt pro zadaný basic_istream parametr objektu. |
sync |
Synchronizuje přidružené vstupní zařízení datového proudu s vyrovnávací pamětí datového proudu. |
tellg |
Zaznamenává aktuální pozici čtení v datovém proudu. |
unget |
Vloží poslední přečtený znak zpět do datového proudu. |
Operátory
Operátor | Popis |
---|---|
operator>> |
Volá funkci vstupního datového proudu nebo čte formátovaná data ze vstupního datového proudu. |
operator= |
basic_istream Přiřadí tento objekt na pravé straně operátoru. Jedná se o přiřazení přesunutí zahrnující rvalue odkaz, který nenechá kopii za sebou. |
Požadavky
Záhlaví: <istream>
Obor názvů: std
basic_istream::basic_istream
Vytvoří objekt typu basic_istream
.
explicit basic_istream(
basic_streambuf<Char_T, Tr>* strbuf,
bool _Isstd = false);
basic_istream(basic_istream&& right);
Parametry
strbuf
Objekt typu basic_streambuf.
_Isstd
true
pokud se jedná o standardní datový proud; v opačném případě . false
right
Objekt basic_istream
, který chcete zkopírovat.
Poznámky
První konstruktor inicializuje základní třídu voláním init(strbuf)
. Ukládá také nulu v počtu extrakce. Další informace najdete na webu init
. Další informace o tomto počtu extrakcí najdete v části Poznámky v přehledu basic_istream
třídy .
Druhý konstruktor inicializuje základní třídu voláním move(right)
. Také ukládá right.gcount()
do počtu extrakce a ukládá nula v počtu extrakce pro right
.
Příklad
Další informace o vstupních datových proudech najdete v příkladu basic_ifstream::basic_ifstream
.
basic_istream::gcount
Vrátí počet znaků přečtených během posledního neformátovaného vstupu.
streamsize gcount() const;
Návratová hodnota
Počet extrakcí.
Poznámky
Slouží basic_istream::get
ke čtení neformátovaných znaků.
Příklad
// 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
Přečte jeden nebo více znaků ze vstupního datového proudu.
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
Počet znaků, ze strbuf
které se má číst .
delimiter
Znak, který by měl ukončit čtení, pokud je zjištěn před count
.
str
Řetězec, ve kterém se má psát.
Ch
Znak, který chcete získat.
strbuf
Vyrovnávací paměť, do které se má zapisovat.
Návratová hodnota
Bez parametrů get
vrátí prvek přečtený jako celé číslo nebo konec souboru. Zbývající formuláře vrátí datový proud (*this
).
Poznámky
První neformátovaná vstupní funkce extrahuje prvek, pokud je to možné, například vrácením rdbuf->sbumpc
. V opačném případě se vrátí traits_type::
eof
. Pokud funkce extrahuje žádný prvek, volá setstate(failbit)
. Další informace najdete na webu setstate
.
Druhá funkce extrahuje int_type
prvek meta
stejným způsobem. Pokud meta
je porovnání rovno traits_type::eof
, funkce volá setstate(failbit)
. V opačném případě se ukládá traits_type::to_char_type(meta)
do Ch
. Funkce vrátí *this
. Další informace najdete na webu to_char_type
.
Třetí funkce vrátí get(str, count, widen('\n'))
.
Čtvrtá funkce extrahuje až prvky count - 1
a uloží je do pole začínající na str
. Vždy ukládá char_type
po všech extrahovaných prvech, které ukládá. V pořadí testování se extrakce zastaví:
Na konci souboru.
Za funkcí extrahuje prvek, který porovnává rovnající
delimiter
se . V tomto případě se prvek vrátí do řízené sekvence.Za funkcí extrahuje
count - 1
prvky.
Pokud funkce extrahuje žádné prvky, volá setstate(failbit)
. V každém případě vrátí *this
.
Pátá funkce vrátí get(strbuf, widen('\n'))
.
Šestá funkce extrahuje prvky a vloží je do strbuf
. Extrahování se zastaví na konci souboru nebo u prvku, který se porovnává se rovnajícím delimiter
, který se extrahuje. Zastaví se také bez extrahování příslušného prvku, pokud vložení selže nebo vyvolá výjimku (která je zachycena, ale není znovu vyvolána). Pokud funkce extrahuje žádné prvky, volá setstate(failbit)
. V každém případě vrátí *this
funkce .
Příklad
// 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
Získá řádek ze vstupního datového proudu.
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
Počet znaků, ze strbuf
které se má číst .
delimiter
Znak, který by měl ukončit čtení, pokud je zjištěn před count
.
str
Řetězec, ve kterém se má psát.
Návratová hodnota
Datový proud (*this
).
Poznámky
První z těchto neformátovaných vstupních funkcí vrátí getline(str, count, widen('\n'))
.
Druhá funkce extrahuje až k count - 1
prvkům a uloží je do pole začínající na str
. Za extrahovanými elementy, které ukládá, vždy uloží znak ukončení řetězce. V pořadí testování se extrakce zastaví:
Na konci souboru.
Za funkcí extrahuje prvek, který porovnává rovnající
delimiter
se . V tomto případě se prvek nevloží zpět a nepřidá se k řízené sekvenci.Za funkcí extrahuje
count - 1
prvky.
Pokud funkce extrahuje žádné prvky nebo count - 1
prvky, volá setstate(failbit)
. V každém případě vrátí *this
. Další informace najdete na webu setstate
.
Příklad
// 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
Způsobí vynechání několika prvků z aktuální pozice čtení.
basic_istream<Char_T, Tr>& ignore(
streamsize count = 1,
int_type delimiter = traits_type::eof());
Parametry
count
Počet prvků, které se mají přeskočit z aktuální pozice čtení.
delimiter
Prvek, který pokud byl zjištěn před počtem, způsobí ignore
vrácení a povolení všech prvků po delimiter
přečtení.
Návratová hodnota
Datový proud (*this
).
Poznámky
Neformátovaná vstupní funkce extrahuje až prvky count
a zahodí je. Pokud count
se však rovná numeric_limits<int>::max
, je to považováno za libovolně velké. Extrakce se zastaví brzy na konci souboru nebo u prvku Ch
, který traits_type::to_int_type(Ch)
se porovná s delimiter
(který se také extrahuje). Funkce vrátí *this
. Další informace najdete na webu to_int_type
.
Příklad
// 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>>
Volá funkci vstupního datového proudu nebo čte formátovaná data ze vstupního datového proudu.
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
Ukazatel funkce.
strbuf
Objekt typu stream_buf
.
val
Hodnota, která se má číst z datového proudu.
Návratová hodnota
Datový proud (*this
).
Poznámky
Hlavička <istream>
také definuje několik operátorů globální extrakce. Další informace najdete na webu operator>> (\<istream>)
.
První člen funkce zajišťuje, že výraz volání ws(istr)
formuláře istr >> ws
a poté vrátí *this
. Další informace najdete na webu ws
.
Druhá a třetí funkce zajišťují, aby se ostatní manipulátory, například hex
, chovaly podobně. Zbývající funkce jsou formátované vstupní funkce.
Funkce:
basic_istream& operator>>(
basic_streambuf<Char_T, Tr>* strbuf);
extrahuje prvky, pokud strbuf
není ukazatel null, a vloží je do strbuf
. Extrakce se zastaví na konci souboru. Zastaví se také bez extrahování příslušného prvku, pokud vložení selže nebo vyvolá výjimku (která je zachycena, ale není znovu vyvolána). Pokud funkce extrahuje žádné prvky, volá setstate(failbit)
. V každém případě vrátí *this
funkce . Další informace najdete na webu setstate
.
Funkce:
basic_istream& operator>>(bool& val);
extrahuje pole a převede ho na logickou hodnotu voláním use_facet< num_get<Char_T, InIt>(getloc).get( InIt(rdbuf), Init(0), *this, getloc, val)
. InIt
Zde je definován jako istreambuf_iterator<Char_T, Tr>
. Funkce vrátí *this
.
Další informace naleznete v tématu use_facet
, getloc
, get
, rdbuf
, a istreambuf_iterator
.
Každá z těchto funkcí:
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);
extrahujte pole a převeďte ho na číselnou hodnotu voláním use_facet<num_get<Char_T, InIt>(getloc).get(InIt(rdbuf), Init(0), *this, getloc, val)
. InIt
Zde je definován jako istreambuf_iterator<Char_T, Tr>
a val
má typ long
, unsigned long
nebo void *
podle potřeby.
Pokud převedenou hodnotu nelze reprezentovat jako typ val
, funkce volá setstate(failbit)
. V každém případě vrátí *this
funkce . Další informace najdete na webu setstate
.
Každá z těchto funkcí:
basic_istream& operator>>(float& val);
basic_istream& operator>>(double& val);
basic_istream& operator>>(long double& val);
extrahujte pole a převeďte ho na číselnou hodnotu voláním use_facet<num_get<Char_T, InIt>(getloc).get(InIt(rdbuf), Init(0), *this, getloc, val)
. InIt
Zde je definován jako istreambuf_iterator<Char_T, Tr>
a val
má typ double
nebo long double
podle potřeby.
Pokud převedenou hodnotu nelze reprezentovat jako typ val
, funkce volá setstate(failbit)
. V každém případě vrátí *this
.
Příklad
// 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=
basic_istream
Přiřadí tento objekt na pravé straně operátoru. Jedná se o přiřazení přesunutí zahrnující rvalue
odkaz, který nenechá kopii za sebou.
basic_istream& operator=(basic_istream&& right);
Parametry
right
Odkaz rvalue
na basic_ifstream
objekt.
Návratová hodnota
Vrací objekt *this
.
Poznámky
Operátor člena volá swap(right)
.
basic_istream::peek
Vrátí další znak, který se má přečíst.
int_type peek();
Návratová hodnota
Další znak, který se přečte.
Poznámky
Neformátovaná vstupní funkce extrahuje prvek, pokud je to možné, například vrácením rdbuf->sgetc
. V opačném případě se vrátí traits_type::eof
. Další informace najdete v tématech sgetc
a eof
.
Příklad
// 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
Vloží zadaný znak do datového proudu.
basic_istream<Char_T, Tr>& putback(
char_type Ch);
Parametry
Ch
Znak, který se má vrátit do datového proudu.
Návratová hodnota
Datový proud (*this
).
Poznámky
Neformátovaná vstupní funkce vrátí zpět Ch
, pokud je to možné, pokud je to možné voláním rdbuf->sputbackc
. Pokud rdbuf
je ukazatel null nebo pokud volání, které se sputbackc
má vrátit traits_type::eof
, funkce volá setstate(badbit)
. V každém případě vrátí *this
.
Další informace naleznete v tématu rdbuf
, sputbackc
, eof
a setstate
.
Příklad
// 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
Přečte zadaný počet znaků z datového proudu a uloží je do pole.
Tato metoda je potenciálně nebezpečná, protože volající spoléhá na kontrolu správnosti předaných hodnot.
basic_istream<Char_T, Tr>& read(
char_type* str,
streamsize count);
Parametry
str
Pole, ve kterém se mají číst znaky.
count
Počet znaků, které se mají přečíst.
Návratová hodnota
Datový proud ( *this
).
Poznámky
Neformátovaná vstupní funkce extrahuje až prvky count
a ukládá je do pole začínající na str
. Extrakce se zastaví brzy na konci souboru, v takovém případě funkce volá setstate(failbit)
. V každém případě vrátí *this
. Další informace najdete na webu setstate
.
Příklad
// 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
Přečte zadaný počet hodnot znaků.
Tato metoda je potenciálně nebezpečná, protože volající spoléhá na kontrolu správnosti předaných hodnot.
streamsize readsome(
char_type* str,
streamsize count);
Parametry
str
Pole, ve kterém readsome
jsou uloženy znaky, které čte.
count
Počet znaků, které se mají přečíst.
Návratová hodnota
Počet znaků, které se skutečně čtou, gcount
.
Poznámky
Tato neformátovaná vstupní funkce extrahuje z vstupního datového proudu až prvky count
a uloží je do pole str
.
Tato funkce nečeká na vstup. Čte data, která jsou k dispozici.
Příklad
// 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
Přesune pozici čtení v datovém proudu.
basic_istream<Char_T, Tr>& seekg(pos_type pos);
basic_istream<Char_T, Tr>& seekg(off_type off, ios_base::seekdir way);
Parametry
pos
Absolutní pozice, ve které se má ukazatel pro čtení přesunout.
off
Posun pro přesunutí ukazatele na čtení vzhledem k way
.
way
Jeden z ios_base::seekdir
výčtů.
Návratová hodnota
Datový proud (*this
).
Poznámky
První členová funkce provádí absolutní hledání, druhá členová funkce provádí relativní hledání.
Poznámka:
Nepoužívejte druhou členovou funkci s textovými soubory, protože standardní C++ nepodporuje relativní hledání v textových souborech.
Pokud fail
je false
, první člen funkce volá newpos = rdbuf->pubseekpos(pos)
, pro nějaký pos_type
dočasný objekt newpos
. Pokud fail
je false
, druhá funkce volá newpos = rdbuf->pubseekoff( off, way)
. V obou případech pokud (off_type)newpos == (off_type)(-1)
(operace umístění selže), funkce zavolá istr.setstate(failbit)
. Obě funkce vrací *this
.
Pokud fail
ano true
, členské funkce nic nedělají.
Další informace naleznete v tématu rdbuf
, pubseekpos
, pubseekoff
a setstate
.
Příklad
// 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
Vnořená třída popisuje objekt, jehož deklarace strukturuje formátované a neformátované vstupní funkce.
class sentry {
public:
explicit sentry(
basic_istream<Char_T, Tr>& _Istr,
bool _Noskip = false);
operator bool() const;
};
Poznámky
Pokud _Istr.good
je true
, konstruktor:
Volání
_Istr.tie->flush
, pokud_Istr.tie
není ukazatel null.Efektivně volá
ws(_Istr)
, pokud_Istr.flags & skipws
je nenulová.
Pokud po nějaké takové přípravě, _Istr.good
je false
, konstruktor volá _Istr.setstate(failbit)
. V každém případě konstruktor ukládá hodnotu vrácenou _Istr.good
v status
. Pozdější volání, které operator bool
tuto uloženou hodnotu doručí.
Další informace naleznete v tématu good
, tie
, flush
, ws
, flags
, , skipws
, a setstate
.
basic_istream::swap
Vymění obsah dvou basic_istream
objektů.
void swap(basic_istream& right);
Parametry
right
Odkaz lvalue
na basic_istream
objekt.
Poznámky
Členské funkce volá basic_ios::swap(right)
. Rovněž vymění počet extrakce s počtem extrakce pro right
. Další informace najdete na webu basic_ios::swap
.
basic_istream::sync
Synchronizuje přidružené vstupní zařízení datového proudu s vyrovnávací pamětí datového proudu.
int sync();
Návratová hodnota
Pokud rdbuf
je ukazatel null, vrátí funkce hodnotu -1. V opačném případě volá rdbuf->pubsync
. Pokud toto volání vrátí hodnotu -1, funkce zavolá setstate(badbit)
a vrátí hodnotu -1. V opačném případě vrátí funkce nulu. Další informace najdete v tématech pubsync
a setstate
.
basic_istream::tellg
Zaznamenává aktuální pozici čtení v datovém proudu.
pos_type tellg();
Návratová hodnota
Aktuální pozice v datovém proudu.
Poznámky
Pokud fail
je false
, členské funkce vrátí rdbuf->pubseekoff(0, cur, in)
. V opačném případě se vrátí pos_type(-1)
. Další informace najdete v tématech rdbuf
a pubseekoff
.
Příklad
// 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
Vloží poslední přečtený znak zpět do datového proudu.
basic_istream<Char_T, Tr>& unget();
Návratová hodnota
Datový proud (*this
).
Poznámky
Neformátovaná vstupní funkce vrátí předchozí prvek ve streamu, pokud je to možné, například voláním rdbuf->sungetc
If rdbuf
je ukazatel null, nebo pokud volání, které se sungetc
má vrátit traits_type::eof
, volání setstate(badbit)
funkce . V každém případě vrátí *this
.
Další informace najdete v tématech sungetc
, eof
a setstate
. A informace o tom, jak unget
může selhat, naleznete v tématu basic_streambuf::sungetc
.
Příklad
// 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
Viz také
Bezpečný přístup z více vláken ve standardní knihovně C++
iostream
Programování
iostreams
Konvence