Académique Documents
Professionnel Documents
Culture Documents
14.1 Rappels
L’opérateur << renvoie une référence sur le flot, ce qui permet de cumuler les sorties.
int i = 3;
char c = ‘a’;
char s[] = " bonjour ";
cout << "i =" << i << "c=" << c << "s=" << s << ‘\n’ ;
exemple :
Page 1 sur 9
ostream &put( char c ) Ecrit le caractère.
Page 2 sur 9
14.3 La classe istream : classe des flots d’entrée.
1. Elle surdéfinit l’opérateur >> (extraction) sous la forme d’une fonction membre pour lire
toute valeur de type prédéfini du langage.
L’opérateur >> renvoie une référence sur le flot, ce qui permet de cumuler les entrées.
int i ;
char c ;
Pour lire un objet d’un nouveau type T dans un flot d’entrée avec l’opérateur >>, il suffit de
définir une fonction amie :
Complex z ;
cin >> z ; // il faut taper par exemple 2 + 3i
char texte [ 50 ] ;
cin >> texte ;
// si on frappe " saisie de mot " ( = Entrée)
// alors texte contient "saisie"
// et il reste " de mot " dans le flux d'entrée.
Page 3 sur 9
"saute" les blancs au début
arrête la saisie dès le premier caractère différent d'un chiffre
int i ;
cin >> i ;
// si on frappe " 123A" ou " 123 "
// alors i contient 123
// et il reste "A" ou le caractère "" (Entrée seul)
double d ;
cin >> d ;
// si on frappe " 3.14A" ou " 3.14 "
// alors d contient 3.14
// et il reste "A" ou le caractère "" (Entrée seul)
int get();
rend le premier caractère du flux sous la forme d'un entier, les autres restent dans le flux.
istream& get(char&);
rend le premier caractère du flux
ctrl Z rend 0.
La fonction getline()
Page 4 sur 9
istream& getline(char*, int len, char terminal= '\n');
même comportement que get( char *, int, int ) mais
Le caractère terminal est retiré du flux et remplacé par '\0' dans la saisie
Lit donc un caractère de plus que get( char *, int, int ).
La fonction gcount()
int gcount ( );
Renvoie le nombre de caractères saisis par get et getline (et read)
(avec getline on lit un caractère de plus car le caractère terminal est retiré du flux)
char texte[ 50 ] ;
int i ;
i = cin.get() ;
// si on frappe "56"
// alors i contient 0x35 et il reste "6"
La fonction read()
istream& read(char*, int len);
même comportement que get( char *, int, int ) mais
n'utilise pas de caractère terminal.
Peu intéressant.
La fonction peek()
int peek( );
Rend le caractère dans le flux sans l'extraire.
Page 5 sur 9
Les fonctions tellg() et seekg()
fonctions d'état :
bool good() ;
bool fail() ;
bool eof() ;
14.5 Formatage.
int i = 16;
float x = 12.3456;
cout << ‘*’ << hex << i << ‘*‘ << setw( 8 ) << setprecision( 2 ) << x << ‘*’;
// affiche *10* 12.35*
Page 6 sur 9
14.6 Les flux fstream : les fichiers (ofstream, ifstream)
14.6.2 Constructeur
fstream( const char *name, int mode, int prot = …. );
ifstream( const char *name, int mode = ios::in );
ofstream( const char *name, int mode = ios::out | ios::trunc );
14.6.6 exemple :
#include <fstream.h>
char ligne[ 80 + 1] ;
char nomFichier[ ] = " …….." ;
ifstream fEntree;
fEntree.open( nomFichier, ios::in );
if( !fEntree.good() ) {
cerr << "erreur ….. " ;
return ;
Page 7 sur 9
}
while( … ) {
fEntree.getline( ligne, 80 + 1, '\n' );
if( fEntree.eof() || fEntree.fail() ) break ;
int taille = fEntree.gcount( ) – 1 ;
……
}
fEntree.close() ;
14.7.2 Constructeur
strstream( ) ; utilise un buffer alloué dynamiquement
strstream( signed char *buf, int sz, int mode ); utilise le buffer proposé
strstream chaîne ;
int i = 5 ;
double d = 3.14 ;
chaine << " i = " << i << " d = " << d ; // équivalent à sprintf()
Page 8 sur 9
chaine << " fin "
Page 9 sur 9