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êteFonction et description
<iostream>Ce fichier définit les objets
头文件函数和描述
<iostream>该文件定义了 cin、cout、cerrclog 对象,分别对应于标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流。
<iomanip>该文件通过所谓的参数化的流操纵器(比如 setwsetprecision),来声明对执行标准化 I/O 有用的服务。
<fstream>该文件为用户控制的文件处理声明服务。我们将在文件和流的相关章节讨论它的细节。
cin, cout, cerr<🎜> et <🎜>clog<🎜>, correspondant au flux d'entrée standard respectivement, flux de sortie standard, flux d'erreurs standard sans tampon et flux d'erreurs standard tamponné.
<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.