Entrée/sortie de base C++ : exemple Cout, Cin, Cerr

Que sont les flux en C++ ?

C++ fournit aux utilisateurs un certain nombre de bibliothèques qu'ils peuvent utiliser pour effectuer des tâches d'entrée/sortie. Ces tâches sont effectuées sous la forme de séquences d'octets, communément appelées flux.

Les flux sont divisés en deux :

Types de flux

  • Flux d'entrée: Il s'agit d'un type de flux dans lequel les octets circulent d'un périphérique tel qu'un clavier vers la mémoire principale.
  • Flux de sortie : Il s'agit d'un type de flux dans lequel les octets circulent dans la direction opposée, c'est-à-dire de la mémoire principale puis vers le périphérique tel que l'écran d'affichage.

Comment fonctionnent les flux ?

Les flux C++ fonctionnent comme suit :

  1. Tout d’abord, un flux est initialisé avec le bon type.
  2. Ensuite, vous devez indiquer où se trouve le I / O se produira à l’aide de pointeurs get/put.
  3. Après avoir atteint le bon emplacement dans un flux, vous pouvez effectuer des tâches d'entrée et de sortie à l'aide des opérateurs >> et <<, respectivement.

Tableau des fonctions

Le following sont les fonctions fournies dans le fichier d'en-tête stream.h :

Classe Les fonctions
Fichierbuf Il définit les tampons de fichiers en lecture/écriture. Il contient les fonctions close() et open()
fstreambase C'est la classe de base des classes ifstream, fstream et ofstream. Ses opérations sont communes aux flux de fichiers.
ifstream Il s'agit d'une classe de flux de fichiers d'entrée permettant de fournir des opérations d'entrée.
hors flux Il s'agit d'une classe de flux de fichiers de sortie permettant de fournir des opérations de sortie.
fstream C'est une classe de flux d'entrée/sortie. Il prend en charge simultanémentneonous opérations d’entrée/sortie.

Fichiers d'en-tête C++ pour l'entrée/sortie

C++ fournit trois bibliothèques dotées de fonctions permettant d'effectuer des tâches d'entrée/sortie de base. Ils comprennent:

  • Iostream : C'est un acronyme pour flux d'entrée/sortie standard. Ce fichier d'en-tête est livré avec des définitions d'objets comme cin/cout/cerr.
  • Iomanip : C'est un acronyme pour manipulateurs d'entrée/sortie. La bibliothèque est livrée avec des fonctions qui peuvent être utilisées pour la manipulation de flux. Il contient des définitions d'objets comme setw, setprecision et autres.
  • Fstream : Il s'agit d'un fichier d'en-tête pour décrire le flux de fichiers. Il gère les données lues à partir d'un fichier en entrée ou écrites dans un fichier, en sortie.

Les mots-clés cin et cout sont très populaires en C++. Ils sont utilisés respectivement pour prendre des entrées et imprimer des sorties. Pour les utiliser, vous devez inclure le fichier d'en-tête iostream dans votre programme. La raison est qu'ils sont définis dans ce fichier d'en-tête. Le fait de ne pas inclure le fichier d’en-tête iostream générera une erreur. Cela résulte d’un échec du compilateur C++ à comprendre la signification des mots-clés.

Les principaux objets définis dans le fichier d'en-tête iostream sont cin, cout, cerr et clog. Discutons-en.

std :: cout

L'objet cout est une instance de la classe iostream. Il est utilisé pour produire une sortie sur un périphérique de sortie standard, qui est normalement l'écran. Il est utilisé avec l'opérateur d'insertion de flux (<<).

Exemple

#include <iostream>
using namespace std;
int main() {

	char welcome[] = "Welcome to Guru99";

	cout << welcome << endl;

	return 0;
}

Sortie :

std :: cout

Voici une capture d'écran du code :

std :: cout

Explication du code :

  1. Incluez le fichier d'en-tête iostream dans lequel l'objet cout est défini.
  2. Incluez l'espace de noms std afin que nous n'ayons pas à l'appeler lors de l'utilisation de ses classes.
  3. Appelez la fonction main(). Le code du programme doit être ajouté dans son corps. L'accolade ouvrante { marque le début de son corps.
  4. Créez une variable de caractère nommée Welcome pour contenir la chaîne Welcome to Guru99.
  5. Imprime la valeur de la chaîne bienvenue sur la console. Le endl est un mot-clé C++ signifiant ligne de fin. Il déplace le curseur pour commencer à imprimer le texte sur la ligne suivante.
  6. Le programme doit renvoyer une valeur en cas d'exécution réussie.
  7. Fin du corps de la fonction main().

std ::cin

L'objet cin est une instance de la classe istream. Il lit les entrées du périphérique d'entrée, le clavier. Il est normalement utilisé avec l'opérateur d'extraction (>>). L'objet d'extraction est chargé d'extraire les données saisies via le clavier de l'objet cin.

Exemple

Le following L'exemple montre comment utiliser le mot-clé cin dans C + +:

#include <iostream>
using namespace std;
int main()
{
	int number;

	cout << "Enter a number:";
	cin >> number;
	cout << "\nYou entered: " << number;

	return 0;
}

Sortie :

std ::cin

Voici une capture d'écran du code :

std ::cin

Explication du code :

  1. Incluez le fichier d'en-tête iostream dans notre programme. L'objet cin est défini dans ce fichier d'en-tête.
  2. Incluez l'espace de noms std pour utiliser ses classes. Vous n'aurez pas besoin d'appeler std lors de l'utilisation de ses classes.
  3. Appelez la fonction main(). Le code du programme doit être ajouté dans son corps.
  4. Le début du corps du programme.
  5. Déclarer un variable entière numéro nommé.
  6. Imprimez un message à l'écran invitant l'utilisateur à saisir un numéro.
  7. Lire la valeur saisie par l'utilisateur sur la console à partir du clavier.
  8. Imprimez la valeur lue ci-dessus sur la console à côté d'un autre texte.
  9. Le programme doit renvoyer une valeur s'il s'exécute avec succès.
  10. Fin du corps de la fonction principale.

std ::cerr

L'objet cerr forme le flux d'erreurs standard pour générer des erreurs en C++. Cerr est une instance de la classe ostream. L'objet cerr n'est pas tamponné. Cela signifie qu'il est utilisé lorsqu'un message d'erreur doit être affiché immédiatement.

Comme il n'est pas mis en mémoire tampon, il ne stocke pas de message d'erreur pour un affichage ultérieur. Il est utilisé avec l'opérateur d'insertion de flux (<<).

Exemple

#include <iostream>
using namespace std;
int main() {

	cerr << "An Error occurred!";

	return 0;
}

Sortie :

std ::cerr

Voici une capture d'écran du code :

std ::cerr

Explication du code :

  1. Inclut le fichier d'en-tête iostream où l'objet cerr a été défini.
  2. Incluez l'espace de noms std afin que nous n'ayons pas à l'appeler lors de l'utilisation de ses classes.
  3. Appelez la fonction main(). La logique du programme doit être ajoutée dans son corps. L'accolade ouvrante marque le début du corps de la fonction.
  4. Utilisez l'objet cerr pour imprimer une erreur sur la console.
  5. Le programme doit renvoyer une valeur en cas d'exécution réussie.
  6. Fin du corps de la fonction principale.

std :: obstruer

L'objet clog est une instance de la classe ostream. Il est utilisé pour afficher les erreurs sur l'écran standard, le moniteur. C'est similaire à l'objet cerr, mais il est mis en mémoire tampon. Puisqu'il est mis en mémoire tampon, il stocke le message d'erreur dans le tampon jusqu'à ce que le tampon soit rempli/vidé. Il est utilisé avec l'opérateur d'insertion de flux (<<).

Exemple

#include <iostream>
using namespace std;
int main() {
	clog << "An Error occurred!";
	return 0;
}

Sortie :

std :: obstruer

Voici une capture d'écran du code :

std :: obstruer

Explication du code :

  1. Y compris le fichier d'en-tête iostream dans lequel l'objet clog est défini.
  2. Y compris l'espace de noms std afin que nous puissions utiliser ses classes sans l'appeler.
  3. Appel de la fonction main(). La logique du programme doit être ajoutée dans son corps. Le { marque le début du corps de la fonction.
  4. Utilisez l'objet sabot pour imprimer une erreur sur la sortie standard, le moniteur.
  5. Le programme doit renvoyer une valeur une fois terminé.
  6. La fin du corps de la fonction main().

Gestion des erreurs avec les flux IO

Pour vérifier si un flux est valide ou non, vous pouvez l'utiliser comme booléen.

Voici un exemple:

ifstream file( "myfile.txt" );
if ( ! file )
{
        cout << "File NOT opened!" << endl;
}

Pour obtenir plus details pour l'état du flux, vous pouvez utiliser ces fonctions :

  • good()- retournera true si tout va bien.
  • mauvais()- retournera vrai si une erreur fatale se produit.
  • fail()- renverra true après une opération de flux infructueuse.
  • eof()- retournera true s'il atteint la fin d'un fichier.

Pour savoir si une opération de lecture/écriture particulière a échoué, testez le résultat de la lecture.

Par exemple, pour vérifier si l'utilisateur a saisi un entier valide, procédez comme suit :

int p;
if ( cin >> p ) 
{
        cout << "Enter valid number" << endl;
}

Résumé

  • Les tâches d'entrée et de sortie en C++ sont effectuées via une séquence d'octets. Les octets sont appelés flux.
  • Dans un flux d'entrée, les octets circulent du périphérique d'entrée comme un clavier vers la mémoire principale.
  • Dans un flux de sortie, les octets de la mémoire principale sont ensuite envoyés à un périphérique de sortie tel qu'un moniteur.
  • L'objet cin est une instance de la classe istream. Il lit les entrées d'un périphérique d'entrée comme le clavier.
  • L'objet cout est une instance de la classe ostream. Il produit une sortie sur des périphériques de sortie comme le moniteur.
  • L'objet cerr est une instance de la classe ostream. Il affiche les objets d'erreur sur le moniteur.
  • L'objet clog est une instance de la classe ostream. Il affiche des messages d'erreur sur les périphériques de sortie.
  • L'objet clog met en mémoire tampon les messages d'erreur, contrairement à l'objet cerr.