Entrée et sortie de base C++
La bibliothèque standard C++ fournit un riche ensemble de fonctions d'entrée/sortie, que nous présenterons dans les chapitres suivants. Ce chapitre traite des opérations d'E/S les plus élémentaires et les plus courantes en programmation C++.
Les E/S C++ se produisent dans des flux, qui sont des séquences d'octets. Si un flux d'octets circule d'un périphérique (tel qu'un clavier, un lecteur de disque, une connexion réseau, etc.) vers la mémoire, cela s'appelle une opération d'entrée. Si un flux d'octets circule de la mémoire vers un périphérique (tel qu'un écran, une imprimante, un lecteur de disque, une connexion réseau, etc.), cela s'appelle une opération de sortie.
Fichiers d'en-tête de la bibliothèque d'E/S
Les fichiers d'en-tête suivants sont très importants dans la programmation C++.
Fichier d'en-tête | Fonction et description | tr>||||||||
---|---|---|---|---|---|---|---|---|---|
<iostream> | Ce fichier définit les objets
| ||||||||
<iomanip> | Ce fichier est transmis via des manipulateurs de flux dits paramétrés (tels que <🎜>setw<🎜> et <🎜> setprecision <🎜>), pour déclarer les services utiles pour effectuer des E/S standardisées. | ||||||||
<fstream> | Ce fichier sert une instruction de traitement de fichier contrôlée par l'utilisateur. Nous en discuterons en détail dans les chapitres pertinents sur les fichiers et les flux. |
Flux de sortie standard (cout)
L'objet prédéfini cout est une instance de la classe ostream. L'objet cout "se connecte" au périphérique de sortie standard, généralement l'écran d'affichage. cout est utilisé conjointement avec l'opérateur d'insertion de flux << comme indiqué ci-dessous :
#include <iostream> using namespace std; int main( ) { char str[] = "Hello C++"; cout << "Value of str is : " << str << endl; }
Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :
Value of str is : Hello C++
Le compilateur C++ sélectionne l'opérateur d'insertion de flux approprié pour afficher la valeur en fonction du type de données de la variable à générer. L'opérateur << est surchargé pour générer des éléments de données de types intégrés (entier, flottant, double, chaîne et pointeur).
L'opérateur d'insertion de flux << peut être utilisé plusieurs fois dans une instruction, comme le montre l'exemple ci-dessus, endl est utilisé pour ajouter un caractère de nouvelle ligne à la fin de la ligne.
Flux d'entrée standard (cin)
L'objet prédéfini cin est une instance de la classe istream. L'objet cin est attaché au périphérique d'entrée standard, généralement le clavier. cin est utilisé conjointement avec l'opérateur d'extraction de flux >> comme indiqué ci-dessous :
#include <iostream> using namespace std; int main( ) { char name[50]; cout << "请输入您的名称: "; cin >> name; cout << "您的名称是: " << name << endl; }
Lorsque le code ci-dessus est compilé et exécuté, il demande à l'utilisateur un nom. Lorsque l'utilisateur saisit une valeur et appuie sur la touche Entrée, il verra le résultat suivant :
请输入您的名称: cplusplus 您的名称是: cplusplus
Le compilateur C++ sélectionne l'opérateur d'extraction de flux approprié pour extraire la valeur en fonction du type de données de la valeur à être entré, et le met Il est stocké dans la variable donnée.
Opérateur d'extraction de flux>> peut être utilisé plusieurs fois dans une seule instruction. Si plusieurs entrées de données sont requises, l'instruction suivante peut être utilisée :
cin >> name >> age;
Cela équivaut aux deux instructions suivantes. :
cin >> name; cin >> age;
Standard Error Stream (cerr)
L'objet prédéfini cerr est une instance de la classe ostream. L'objet cerr est attaché au périphérique d'erreur standard, généralement l'écran d'affichage, mais l'objet cerr n'est pas mis en mémoire tampon et chaque flux inséré dans cerr est immédiatement généré.
cerr est également utilisé en conjonction avec l'opérateur d'insertion de flux << comme indiqué ci-dessous :
#include <iostream> using namespace std; int main( ) { char str[] = "Unable to read...."; cerr << "Error message : " << str << endl; }
Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :
Error message : Unable to read....
Flux de journaux standard (clog)
L'objet prédéfini clog est une instance de la classe ostream. L'objet clog est attaché au périphérique d'erreur standard, généralement l'écran d'affichage, mais l'objet clog est mis en mémoire tampon. Cela signifie que chaque flux inséré dans le sabot est d'abord stocké dans le tampon et n'est émis que lorsque le tampon est rempli ou vidé.
clog est également utilisé en conjonction avec l'opérateur d'insertion de flux << comme indiqué ci-dessous :
#include <iostream> using namespace std; int main( ) { char str[] = "Unable to read...."; clog << "Error message : " << str << endl; }
Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :
Error message : Unable to read....
Avec ces petits exemples, nous ne pouvons pas faire la différence entre cout, cerr et clog, mais lors de l'écriture et de l'exécution de gros programmes, la différence entre eux devient très évidente. Ainsi, de bonnes pratiques de programmation nous disent d'utiliser le flux cerr pour afficher les messages d'erreur et d'autres messages de journal pour utiliser le flux clog pour générer la sortie.