Entrée / sortie de base C ++

Les bibliothèques standard C ++ fournissent un ensemble complet de capacités d'entrée / sortie que nous verrons dans les chapitres suivants. Ce chapitre abordera les opérations d'E / S les plus basiques et les plus courantes requises pour la programmation C ++.

Les E / S C ++ se produisent dans les flux, qui sont des séquences d'octets. Si des octets circulent d'un périphérique comme un clavier, un lecteur de disque ou une connexion réseau, etc. vers la mémoire principale, cela s'appelleinput operation et si des octets circulent de la mémoire principale vers un périphérique comme un écran d'affichage, une imprimante, un lecteur de disque ou une connexion réseau, etc., cela s'appelle output operation.

Fichiers d'en-tête de bibliothèque d'E / S

Les fichiers d'en-tête suivants sont importants pour les programmes C ++ -

Sr.Non Fichier d'en-tête, fonction et description
1

<iostream>

Ce fichier définit le cin, cout, cerr et clog objets, qui correspondent respectivement au flux d'entrée standard, au flux de sortie standard, au flux d'erreur standard non tamponné et au flux d'erreur standard tamponné.

2

<iomanip>

Ce fichier déclare des services utiles pour effectuer des E / S formatées avec des manipulateurs de flux paramétrés, tels que setw et setprecision.

3

<fstream>

Ce fichier déclare des services pour le traitement de fichiers contrôlé par l'utilisateur. Nous en discuterons en détail dans le chapitre relatif aux fichiers et aux flux.

Le flux de sortie standard (cout)

L'objet prédéfini cout est une instance de ostreamclasse. On dit que l'objet cout est "connecté" au périphérique de sortie standard, qui est généralement l'écran d'affichage. lecout est utilisé en conjonction avec l'opérateur d'insertion de flux, qui s'écrit << qui sont deux signes de moins que comme illustré dans l'exemple suivant.

#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 le résultat suivant -

Value of str is : Hello C++

Le compilateur C ++ détermine également le type de données de la variable à générer et sélectionne l'opérateur d'insertion de flux approprié pour afficher la valeur. L'opérateur << est surchargé pour générer des éléments de données de types intégrés integer, float, double, strings et pointer values.

L'opérateur d'insertion << peut être utilisé plus d'une fois dans une seule instruction comme indiqué ci-dessus et endl est utilisé pour ajouter une nouvelle ligne à la fin de la ligne.

Le flux d'entrée standard (cin)

L'objet prédéfini cin est une instance de istreamclasse. On dit que l'objet cin est attaché au périphérique d'entrée standard, qui est généralement le clavier. lecin est utilisé en conjonction avec l'opérateur d'extraction de flux, qui s'écrit >> qui sont deux signes supérieurs à, comme illustré dans l'exemple suivant.

#include <iostream>
 
using namespace std;
 
int main() {
   char name[50];
 
   cout << "Please enter your name: ";
   cin >> name;
   cout << "Your name is: " << name << endl;
 
}

Lorsque le code ci-dessus est compilé et exécuté, il vous demandera d'entrer un nom. Vous entrez une valeur, puis appuyez sur Entrée pour voir le résultat suivant -

Please enter your name: cplusplus
Your name is: cplusplus

Le compilateur C ++ détermine également le type de données de la valeur entrée et sélectionne l'opérateur d'extraction de flux approprié pour extraire la valeur et la stocker dans les variables données.

L'opérateur d'extraction de flux >> peut être utilisé plus d'une fois dans une seule instruction. Pour demander plus d'une donnée, vous pouvez utiliser ce qui suit -

cin >> name >> age;

Ce sera équivalent aux deux déclarations suivantes -

cin >> name;
cin >> age;

Le flux d'erreur standard (cerr)

L'objet prédéfini cerr est une instance de ostreamclasse. On dit que l'objet cerr est attaché au dispositif d'erreur standard, qui est également un écran d'affichage mais l'objetcerr n'est pas mis en mémoire tampon et chaque insertion de flux dans cerr fait apparaître immédiatement sa sortie.

le cerr est également utilisé en conjonction avec l'opérateur d'insertion de flux, comme illustré dans l'exemple suivant.

#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 le résultat suivant -

Error message : Unable to read....

Le flux de journaux standard (sabotage)

L'objet prédéfini clog est une instance de ostreamclasse. On dit que l'objet sabot est attaché au dispositif d'erreur standard, qui est également un écran d'affichage mais l'objetclogest tamponné. Cela signifie que chaque insertion à obstruer peut entraîner le maintien de sa sortie dans un tampon jusqu'à ce que le tampon soit rempli ou jusqu'à ce que le tampon soit vidé.

le clog est également utilisé en conjonction avec l'opérateur d'insertion de flux, comme illustré dans l'exemple suivant.

#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 le résultat suivant -

Error message : Unable to read....

Vous ne pourriez pas voir de différence dans cout, cerr et sabot avec ces petits exemples, mais lors de l'écriture et de l'exécution de gros programmes, la différence devient évidente. Il est donc recommandé d'afficher les messages d'erreur à l'aide du flux cerr et lors de l'affichage d'autres messages de journal, le sabot doit être utilisé.