La classe basic_istream
Décrit un objet qui contrôle l’extraction d’éléments et d’objets encodés à partir d’une mémoire tampon de flux avec des éléments de type Char_T
, également appelés char_type
, dont les caractéristiques de caractère sont déterminées par la classe Tr
, également appelée traits_type
.
Syntaxe
template <class Char_T, class Tr = char_traits<Char_T>>
class basic_istream : virtual public basic_ios<Char_T, Tr>
Notes
La plupart des fonctions membres surchargées operator>>
sont des fonctions d’entrée mises en forme. Elles suivent le modèle :
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);
De nombreuses autres fonctions membres sont des fonctions d'entrée non mise en forme. Elles suivent le modèle :
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);
Les deux groupes de fonctions appellent setstate(eofbit)
s’ils rencontrent la fin du fichier lors de l’extraction d’éléments. Pour plus d’informations, consultez setstate
.
Objet de classe basic_istream<Char_T, Tr>
stocke :
Objet de base public virtuel de classe
basic_ios<Char_T, Tr>
. Pour plus d’informations, consultezbasic_ios
.Nombre d’extractions pour la dernière opération d’entrée non mise en forme (appelée
count
dans le code précédent).
Exemple
Consultez l’exemple de basic_ifstream
classe pour en savoir plus sur les flux d’entrée.
Constructeurs
Constructeur | Description |
---|---|
basic_istream |
Construit un objet de type basic_istream . |
Fonctions Membre
Fonction membre | Description |
---|---|
gcount |
Retourne le nombre de caractères lus au cours de la dernière entrée non mise en forme. |
get |
Lit un ou plusieurs caractères dans le flux d'entrée. |
getline |
Lit une ligne dans le flux d'entrée. |
ignore |
Ignore un certain nombre d'éléments à partir de la position de lecture actuelle. |
peek |
Retourne le caractère suivant à lire. |
putback |
Place un caractère spécifié dans le flux. |
read |
Lit un nombre spécifié de caractères dans le flux et les stocke dans un tableau. |
readsome |
Lire seulement dans la mémoire tampon. |
seekg |
Déplace la position de lecture dans un flux. |
sentry |
La classe imbriquée décrit un objet dont la déclaration structure les fonctions d'entrée mise en forme et les fonctions d'entrée non mise en forme. |
swap |
Échange cet objet basic_istream pour le paramètre d'objet basic_istream fourni. |
sync |
Synchronise l’appareil d’entrée associé au flux avec la mémoire tampon du flux. |
tellg |
Indique la position de lecture actuelle dans le flux. |
unget |
Replace le dernier caractère lu dans le flux. |
Opérateurs
Opérateur | Description |
---|---|
operator>> |
Appelle une fonction sur le flux d'entrée ou lit les données mises en forme dans le flux d'entrée. |
operator= |
Affecte le basic_istream du côté droit de l'opérateur à cet objet. Il s’agit d’une affectation de déplacement impliquant une rvalue référence qui ne laisse pas de copie derrière elle. |
Spécifications
En-tête : <istream>
Espace de noms : std
basic_istream::basic_istream
Construit un objet de type basic_istream
.
explicit basic_istream(
basic_streambuf<Char_T, Tr>* strbuf,
bool _Isstd = false);
basic_istream(basic_istream&& right);
Paramètres
strbuf
Objet de type basic_streambuf.
_Isstd
true
s’il s’agit d’un flux standard ; sinon, false
.
right
Objet basic_istream
à copier.
Notes
Le premier constructeur initialise la classe de base en appelant init(strbuf)
. Il stocke également zéro dans le nombre d’extractions. Pour plus d’informations, consultez init
. Pour plus d’informations sur ce nombre d’extractions, consultez la section Remarques de la vue d’ensemble de la basic_istream
classe .
Le deuxième constructeur initialise la classe de base en appelant move(right)
. Il stocke right.gcount()
également dans le nombre d’extraction et stocke zéro dans le nombre d’extraction pour right
.
Exemple
Consultez l’exemple pour basic_ifstream::basic_ifstream
en savoir plus sur les flux d’entrée.
basic_istream::gcount
Retourne le nombre de caractères lus au cours de la dernière entrée non mise en forme.
streamsize gcount() const;
Valeur de retour
Nombre d’extractions.
Notes
Permet basic_istream::get
de lire des caractères non mis en forme.
Exemple
// 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
Lit un ou plusieurs caractères dans le flux d'entrée.
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);
Paramètres
count
Nombre de caractères à lire à partir de strbuf
.
delimiter
Caractère qui doit terminer la lecture si elle est rencontrée avant count
.
str
Chaîne dans laquelle écrire.
Ch
Caractère à obtenir.
strbuf
Mémoire tampon dans laquelle écrire.
Valeur de retour
La forme sans paramètre de get
renvoie l’élément lu sous la forme d’un entier ou d’une fin de fichier. Les formulaires restants retournent le flux (*this
).
Notes
La première fonction d’entrée non mise en forme extrait un élément, si possible, comme si c’était le cas en retournant rdbuf->sbumpc
. Sinon, traits_type::
eof
est retourné. Si la fonction extrait aucun élément, elle appelle setstate(failbit)
. Pour plus d’informations, consultez setstate
.
La deuxième fonction extrait l’élément meta
de la int_type
même façon. Si meta
la comparaison est égale à traits_type::eof
, la fonction appelle setstate(failbit)
. Sinon, il stocke traits_type::to_char_type(meta)
dans Ch
. La fonction retourne *this
. Pour plus d’informations, consultez to_char_type
.
La troisième fonction retourne get(str, count, widen('\n'))
.
La quatrième fonction extrait jusqu’aux count - 1
éléments et les stocke dans le tableau à partir de str
. Elle stocke toujours char_type
après les éléments extraits qu’elle stocke. Pour les besoins du test, l’extraction s’arrête :
À la fin du fichier.
Une fois la fonction extraite un élément qui est égal à
delimiter
. Dans ce cas, l’élément est remis à la séquence contrôlée.Une fois la fonction extraite des
count - 1
éléments.
Si la fonction n’extrait aucun élément, elle appelle setstate(failbit)
. Dans tous les cas, elle retourne *this
.
La cinquième fonction retourne get(strbuf, widen('\n'))
.
La sixième fonction extrait les éléments et les insère .strbuf
L’extraction s’arrête sur la fin du fichier ou sur un élément qui est égal à delimiter
, qui n’est pas extrait. Elle s’arrête également, sans extraire l’élément en question, si une insertion échoue ou lève une exception (qui est interceptée, mais n’est pas levée à nouveau). Si la fonction n’extrait aucun élément, elle appelle setstate(failbit)
. Dans tous les cas, la fonction retourne *this
.
Exemple
// 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
Obtient une ligne du flux d’entrée.
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);
Paramètres
count
Nombre de caractères à lire à partir de strbuf
.
delimiter
Caractère qui doit terminer la lecture si elle est rencontrée avant count
.
str
Chaîne dans laquelle écrire.
Valeur de retour
Flux (*this
).
Notes
La première de ces fonctions d’entrée non mises en forme retourne getline(str, count, widen('\n'))
.
La deuxième fonction extrait jusqu’aux count - 1
éléments et les stocke dans le tableau à partir de str
. Elle stocke toujours le caractère de fin de chaîne après tous les éléments extraits qu’elle stocke. Pour les besoins du test, l’extraction s’arrête :
À la fin du fichier.
Une fois la fonction extraite un élément qui est égal à
delimiter
. Dans ce cas, l’élément n’est pas remis en arrière et il n’est pas ajouté à la séquence contrôlée.Une fois la fonction extraite des
count - 1
éléments.
Si la fonction extrait aucun élément ou count - 1
élément, elle appelle setstate(failbit)
. Dans tous les cas, elle retourne *this
. Pour plus d’informations, consultez setstate
.
Exemple
// 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
Ignore un certain nombre d'éléments à partir de la position de lecture actuelle.
basic_istream<Char_T, Tr>& ignore(
streamsize count = 1,
int_type delimiter = traits_type::eof());
Paramètres
count
Nombre d’éléments à ignorer à partir de la position de lecture actuelle.
delimiter
L’élément qui, s’il est rencontré avant le nombre, provoque ignore
le retour et l’autorisation de tous les éléments après delimiter
avoir été lus.
Valeur de retour
Flux (*this
).
Notes
La fonction d’entrée sans mise en forme extrait jusqu’à count
éléments et les ignore. Si count
elle numeric_limits<int>::max
est égale, cependant, elle est considérée comme arbitrairement importante. L’extraction s’arrête tôt à la fin du fichier ou sur un élément Ch
de sorte qu’elle traits_type::to_int_type(Ch)
soit égale à delimiter
(qui est également extraite). La fonction retourne *this
. Pour plus d’informations, consultez to_int_type
.
Exemple
// 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>>
Appelle une fonction sur le flux d'entrée ou lit les données mises en forme dans le flux d'entrée.
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);
Paramètres
Pfn
Pointeur de fonction.
strbuf
Objet de type stream_buf
.
val
Valeur à lire à partir du flux.
Valeur de retour
Flux (*this
).
Notes
L’en-tête <istream>
définit également plusieurs opérateurs d’extraction globaux. Pour plus d’informations, consultez operator>> (\<istream>)
.
La première fonction membre garantit qu’une expression des appels de formulaireistr >> ws
, puis retourne *this
.ws(istr)
Pour plus d’informations, consultez ws
.
Les deuxième et troisième fonctions garantissent que d’autres manipulateurs, tels que hex
, se comportent de la même façon. Les fonctions restantes sont les fonctions d’entrée mises en forme.
La fonction :
basic_istream& operator>>(
basic_streambuf<Char_T, Tr>* strbuf);
extrait des éléments, s’il strbuf
ne s’agit pas d’un pointeur Null, et les insère .strbuf
L’extraction s’arrête à la fin du fichier. Elle s’arrête également, sans extraire l’élément en question, si une insertion échoue ou lève une exception (qui est interceptée, mais n’est pas levée à nouveau). Si la fonction n’extrait aucun élément, elle appelle setstate(failbit)
. Dans tous les cas, la fonction retourne *this
. Pour plus d’informations, consultez setstate
.
La fonction :
basic_istream& operator>>(bool& val);
extrait un champ et le convertit en valeur booléenne en appelant use_facet< num_get<Char_T, InIt>(getloc).get( InIt(rdbuf), Init(0), *this, getloc, val)
. Ici, InIt
est défini comme istreambuf_iterator<Char_T, Tr>
. La fonction retourne *this
.
Pour plus d’informations, consultez use_facet
, getloc
, get
, rdbuf
et istreambuf_iterator
.
Chacune des fonctions :
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);
extrayez un champ et convertissez-le en valeur numérique en appelant use_facet<num_get<Char_T, InIt>(getloc).get(InIt(rdbuf), Init(0), *this, getloc, val)
. Ici, InIt
est défini comme istreambuf_iterator<Char_T, Tr>
, et val
a le type long
, unsigned long
ou void *
si nécessaire.
Si la valeur convertie ne peut pas être représentée comme type de val
, la fonction appelle setstate(failbit)
. Dans tous les cas, la fonction retourne *this
. Pour plus d’informations, consultez setstate
.
Chacune des fonctions :
basic_istream& operator>>(float& val);
basic_istream& operator>>(double& val);
basic_istream& operator>>(long double& val);
extrayez un champ et convertissez-le en valeur numérique en appelant use_facet<num_get<Char_T, InIt>(getloc).get(InIt(rdbuf), Init(0), *this, getloc, val)
. Ici, InIt
est défini comme istreambuf_iterator<Char_T, Tr>
, et val
a le type double
ou long double
si nécessaire.
Si la valeur convertie ne peut pas être représentée comme type de val
, la fonction appelle setstate(failbit)
. Dans tous les cas, elle retourne *this
.
Exemple
// 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=
Affecte le basic_istream
du côté droit de l'opérateur à cet objet. Il s’agit d’une affectation de déplacement impliquant une rvalue
référence qui ne laisse pas de copie derrière elle.
basic_istream& operator=(basic_istream&& right);
Paramètres
right
Référence rvalue
à un objet basic_ifstream
.
Valeur de retour
Retourne *this
.
Notes
L’opérateur membre appelle swap(right)
.
basic_istream::peek
Retourne le caractère suivant à lire.
int_type peek();
Valeur de retour
Caractère suivant à lire.
Notes
La fonction d’entrée non mise en forme extrait un élément, si possible, comme si c’était le cas en retournant rdbuf->sgetc
. Sinon, traits_type::eof
est retourné. Pour plus d’informations, consultez sgetc
et eof
.
Exemple
// 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
Place un caractère spécifié dans le flux.
basic_istream<Char_T, Tr>& putback(
char_type Ch);
Paramètres
Ch
Caractère à remettre dans le flux.
Valeur de retour
Flux (*this
).
Notes
La fonction d’entrée non mise en forme revient Ch
, si possible, comme si elle appelait rdbuf->sputbackc
. S’il rdbuf
s’agit d’un pointeur Null ou si l’appel à sputbackc
renvoyer traits_type::eof
, la fonction appelle setstate(badbit)
. Dans tous les cas, elle retourne *this
.
Pour plus d'informations, voir rdbuf
, sputbackc
, eof
et setstate
.
Exemple
// 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
Lit un nombre spécifié de caractères dans le flux et les stocke dans un tableau.
Cette méthode est potentiellement dangereuse, car elle suppose que l’appelant vérifie que les valeurs passées sont correctes.
basic_istream<Char_T, Tr>& read(
char_type* str,
streamsize count);
Paramètres
str
Tableau dans lequel lire les caractères.
count
Nombre de caractères à lire.
Valeur de retour
Le flux ( *this
).
Notes
La fonction d’entrée non mise en forme extrait jusqu’aux count
éléments et les stocke dans le tableau à partir de str
. L’extraction s’arrête tôt à la fin du fichier, auquel cas la fonction appelle setstate(failbit)
. Dans tous les cas, elle retourne *this
. Pour plus d’informations, consultez setstate
.
Exemple
// 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
Lit le nombre spécifié de valeurs de caractère.
Cette méthode est potentiellement dangereuse, car elle suppose que l’appelant vérifie que les valeurs passées sont correctes.
streamsize readsome(
char_type* str,
streamsize count);
Paramètres
str
Tableau dans lequel readsome
stocke les caractères qu’il lit.
count
Nombre de caractères à lire.
Valeur de retour
Nombre de caractères réellement lus, gcount
.
Notes
Cette fonction d’entrée sans mise en forme extrait jusqu’à count
éléments du flux d’entrée et les stocke dans le tableau str
.
Cette fonction n’attend pas l’entrée. Elle lit toutes les données disponibles.
Exemple
// 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
Déplace la position de lecture dans un flux.
basic_istream<Char_T, Tr>& seekg(pos_type pos);
basic_istream<Char_T, Tr>& seekg(off_type off, ios_base::seekdir way);
Paramètres
pos
Position absolue à laquelle déplacer le pointeur de lecture.
off
Décalage pour déplacer le pointeur de lecture par rapport à way
.
way
Une des ios_base::seekdir
énumérations.
Valeur de retour
Flux (*this
).
Notes
La première fonction membre effectue une recherche absolue, la deuxième fonction membre effectue une recherche relative.
Remarque
N’utilisez pas la deuxième fonction membre avec des fichiers texte, car la norme C++ ne prend pas en charge les recherches relative dans des fichiers texte.
Si fail
c’est false
le cas, la première fonction membre appelle newpos = rdbuf->pubseekpos(pos)
, pour un pos_type
objet newpos
temporaire . Si fail
c’est false
le cas, la deuxième fonction appelle newpos = rdbuf->pubseekoff( off, way)
. Dans les deux cas, si (off_type)newpos == (off_type)(-1)
(l’opération de positionnement échoue), la fonction appelle istr.setstate(failbit)
. Les deux fonctions retournent *this
.
Si fail
c’est true
le cas, les fonctions membres ne font rien.
Pour plus d'informations, voir rdbuf
, pubseekpos
, pubseekoff
et setstate
.
Exemple
// 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
La classe imbriquée décrit un objet dont la déclaration structure les fonctions d’entrée avec et sans mise en forme.
class sentry {
public:
explicit sentry(
basic_istream<Char_T, Tr>& _Istr,
bool _Noskip = false);
operator bool() const;
};
Notes
Si _Istr.good
c’est true
le cas, le constructeur :
Appelle
_Istr.tie->flush
si_Istr.tie
ce n’est pas un pointeur Null.ws(_Istr)
Appelle effectivement s’il_Istr.flags & skipws
n’est pas différent de zéro.
Si après une telle préparation, _Istr.good
est false
, le constructeur appelle _Istr.setstate(failbit)
. Dans tous les cas, le constructeur stocke la valeur retournée par _Istr.good
.status
Un appel ultérieur pour operator bool
remettre cette valeur stockée.
Pour plus d’informations, consultez good
, tie
, flush
, ws
, flags
, skipws
et setstate
.
basic_istream::swap
Échange le contenu de deux objets basic_istream
.
void swap(basic_istream& right);
Paramètres
right
Référence lvalue
à un objet basic_istream
.
Notes
La fonction membre appelle basic_ios::swap(right)
. Elle échange également le nombre d'extractions avec le nombre d'extractions pour right
. Pour plus d’informations, consultez basic_ios::swap
.
basic_istream::sync
Synchronise l’appareil d’entrée associé au flux avec la mémoire tampon du flux.
int sync();
Valeur de retour
S’il rdbuf
s’agit d’un pointeur Null, la fonction retourne -1. Sinon, il appelle rdbuf->pubsync
. Si cet appel retourne -1, la fonction appelle setstate(badbit)
et retourne -1. Sinon, la fonction retourne zéro. Pour plus d’informations, consultez pubsync
et setstate
.
basic_istream::tellg
Indique la position de lecture actuelle dans le flux.
pos_type tellg();
Valeur de retour
Position actuelle dans le flux.
Notes
Si fail
c’est false
le cas, la fonction membre retourne rdbuf->pubseekoff(0, cur, in)
. Sinon, pos_type(-1)
est retourné. Pour plus d’informations, consultez rdbuf
et pubseekoff
.
Exemple
// 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
Replace le dernier caractère lu dans le flux.
basic_istream<Char_T, Tr>& unget();
Valeur de retour
Flux (*this
).
Notes
La fonction d’entrée non mise en forme place l’élément précédent dans le flux, si possible, comme si elle appelait rdbuf->sungetc
If rdbuf
est un pointeur Null ou si l’appel à sungetc
renvoyer traits_type::eof
, la fonction appelle setstate(badbit)
. Dans tous les cas, elle retourne *this
.
Pour plus d'informations, consultez sungetc
, eof
et setstate
. Pour plus d’informations sur la façon dont unget
l’échec peut échouer, consultez basic_streambuf::sungetc
.
Exemple
// 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
Voir aussi
Sécurité des threads dans la bibliothèque C++ Standard
iostream
Programmation
iostreams
Conventions