« Programmation C++/Les entrées-sorties » : différence entre les versions

Contenu supprimé Contenu ajouté
m →‎Flux standards : Ajouts : clog, remarque...
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 19 :
 
=== Exemple ===
<sourcesyntaxhighlight lang="cpp">
#include <iostream>
 
Ligne 34 :
return 0;
}
</syntaxhighlight>
</source>
 
== Autres types de flux ==
Ligne 43 :
=== Flux de fichier ===
La classe <code>ifstream</code> permet de lire à partir d'un fichier. Le constructeur a la syntaxe suivante :
<sourcesyntaxhighlight lang="cpp">
ifstream(const char* filename, openmode mode=in)
</syntaxhighlight>
</source>
Le paramètre <code>mode</code> peut être une combinaison des valeurs suivantes :
;<code>app</code>:('''app'''end) Placer le curseur à la fin du fichier avant écriture.
Ligne 55 :
 
Exemple 1 : lire un entier depuis un fichier
<sourcesyntaxhighlight lang="cpp">
ifstream fichier("test.txt");
int a;
Ligne 61 :
cout << "A = " << a;
fichier.close();
</syntaxhighlight>
</source>
 
Exemple 2 : afficher tous les caractères d'un fichier
<sourcesyntaxhighlight lang="cpp">
ifstream fichier("test.txt");
while (fichier.good())
cout << (char) fichier.get();
fichier.close();
</syntaxhighlight>
</source>
 
La classe <code>ofstream</code> permet d'écrire vers un fichier. Son constructeur a une syntaxe similaire :
<sourcesyntaxhighlight lang="cpp">
ofstream(const char* filename, openmode mode=out|trunc)
</syntaxhighlight>
</source>
 
Exemple :
<sourcesyntaxhighlight lang="cpp">
ofstream fichier("test.txt");
fichier << setw(10) << a << endl;
fichier.close();
</syntaxhighlight>
</source>
 
La classe <code>fstream</code> dérive de la classe <code>iostream</code> permettant à la fois la lecture et l'écriture. Cette dernière (<code>iostream</code>) dérive donc à la fois de la classe <code>ostream</code> et de la classe <code>istream</code>. Son constructeur a la syntaxe suivante :
<sourcesyntaxhighlight lang="cpp">
fstream(const char* filename, openmode mode=in|out)
</syntaxhighlight>
</source>
 
Exemple :
<sourcesyntaxhighlight lang="cpp">
fstream fichier("test.txt");
fichier << setw(10) << a << endl;
Ligne 95 :
fichier >> b;
fichier.close();
</syntaxhighlight>
</source>
 
=== Flux de chaîne de caractères ===
Ligne 102 :
La classe <code>istringstream</code> dérivée de <code>istream</code> permet de lire à partir d'une chaîne de caractères, et possède deux constructeurs :
 
<sourcesyntaxhighlight lang="cpp">
istringstream ( openmode mode = in );
istringstream ( const string & str, openmode mode = in );
</syntaxhighlight>
</source>
 
Exemple :
<sourcesyntaxhighlight lang="cpp">
int n, val;
string stringvalues;
Ligne 119 :
cout << val << endl;
}
</syntaxhighlight>
</source>
 
La classe <code>ostringstream</code> dérivée de <code>ostream</code> permet d'écrire pour créer une chaîne de caractères, et possède également deux constructeurs :
 
<sourcesyntaxhighlight lang="cpp">
ostringstream ( openmode mode = out );
ostringstream ( const string & str, openmode mode = out );
</syntaxhighlight>
</source>
 
Le second permet de spécifier le début de la chaîne de caractères produite.
Ligne 133 :
 
Exemple :
<sourcesyntaxhighlight lang="cpp">
ostringstream oss (ostringstream::out);
int a = 100;
oss << "Test d'écriture a=" << a << "\n";
cout << oss.str();
</syntaxhighlight>
</source>
 
La classe <code>stringstream</code> dérivée de <code>iostream</code> permet d'écrire et lire, et possède deux constructeurs :
<sourcesyntaxhighlight lang="cpp">
stringstream ( openmode mode = in | out );
stringstream ( const string & str, openmode mode = in | out );
</syntaxhighlight>
</source>
 
Exemple :
<sourcesyntaxhighlight lang="cpp">
int n, val;
stringstream ss (stringstream::in | stringstream::out);
Ligne 160 :
cout << val << endl;
}
</syntaxhighlight>
</source>
 
== Manipulateurs ==
Ligne 170 :
 
Exemple:
<sourcesyntaxhighlight lang="cpp">
cout << "Une première ligne" << endl << "Une deuxième ligne" << endl;
</syntaxhighlight>
</source>
 
'''N.B.''': Certains compilateurs C++ (notamment Visual C++) ne supporte pas que le manipulateur <code>endl</code> soit suivi d'autres données à écrire. Dans ce cas, il faut écrire les données suivantes dans une nouvelle instruction :
 
<sourcesyntaxhighlight lang="cpp">
cout << "Une première ligne" << endl;
cout << "Une deuxième ligne" << endl;
</syntaxhighlight>
</source>
 
=== Manipulateur <code>hex</code> ===
Ligne 191 :
 
Exemple :
<sourcesyntaxhighlight lang="cpp">
int a = 200; // 200 en décimal
 
Ligne 202 :
cout << "Valeur de a en base 8 = " << setbase(8) << a << endl;
// affiche: Valeur de a en base 8 = 310
</syntaxhighlight>
</source>
 
=== Manipulateur <code>setw(''width'')</code> ===
Ligne 208 :
 
Exemple :
<sourcesyntaxhighlight lang="cpp">
int a = 11;
cout << "Valeur de a = " << setw(5) << a << endl;
</syntaxhighlight>
</source>
 
Ce code affiche :
Ligne 220 :
 
Exemple :
<sourcesyntaxhighlight lang="cpp">
int a = 11;
cout << "Valeur de a = " << setfill('x') << setw(5) << a << endl;
</syntaxhighlight>
</source>
 
Ce code affiche :
Ligne 232 :
 
Exemple :
<sourcesyntaxhighlight lang="cpp">
double f = 3.14159;
cout << setprecision (5) << f << endl;
cout << setprecision (9) << f << endl;
</syntaxhighlight>
</source>
 
Ce code affiche :