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

Table des matières:

Anonim

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 où les octets circulent dans la direction opposée, c'est-à-dire de la mémoire principale puis vers l'appareil tel que l'écran d'affichage.

Dans ce didacticiel C ++, vous apprendrez:

  • Que sont les flux en C ++?
  • Comment fonctionnent les flux?
  • Tableau des fonctions
  • Fichiers d'en-tête C ++ pour les entrées / sorties
  • std :: cout
  • std :: cin
  • std :: cerr
  • std :: sabot
  • Gestion des erreurs avec les flux IO:

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ù les E / S se produiront à l'aide des pointeurs get / put.
  3. Une fois arrivé au 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

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

Classer Les fonctions
Filebuf Il définit les tampons de fichiers en lecture / écriture. Il contient des 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 C'est une classe de flux de fichiers d'entrée pour fournir des opérations d'entrée.
ofstream C'est une classe de flux de fichiers de sortie pour fournir des opérations de sortie.
fstream C'est une classe de flux d'entrée / sortie. Il prend en charge les opérations d'entrée / sortie simultanées.

Fichiers d'en-tête C ++ pour les entrées / sorties

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

  • Iostream: C'est un acronyme pour flux d'entrée / sortie standard. Ce fichier d'en-tête est livré avec des définitions pour des objets tels que 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 pour des objets tels que 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 du fichier en tant qu'entrée ou écrites dans un fichier, la sortie.

Les mots-clés cin et cout sont très populaires en C ++. Ils sont utilisés pour prendre des entrées et imprimer des sorties, respectivement. Pour les utiliser, vous devez inclure le fichier d'en-tête iostream dans votre programme. La raison en 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 using namespace std;int main() {char welcome[] = "Welcome to Guru99";cout << welcome << endl;return 0;}

Production:

Voici une capture d'écran du code:

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. Imprimez la valeur de la chaîne welcome sur la console. Le endl est un mot-clé C ++ signifiant la ligne de fin. Il déplace le curseur pour commencer l'impression du texte sur la ligne suivante.
  6. Le programme doit renvoyer une valeur lors de l'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 l'entrée du périphérique d'entrée, le clavier. Il est normalement utilisé avec l'opérateur d'extraction (>>). L'objet d'extraction est responsable de l'extraction des données saisies via le clavier à partir de l'objet cin.

Exemple:

L'exemple suivant montre comment utiliser le mot clé cin en C ++:

#include using namespace std;int main(){int number;cout << "Enter a number:";cin >> number;cout << "\nYou entered: " << number;return 0;}

Production:

Voici une capture d'écran du code:

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 à 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éclarez une variable entière nommée number.
  6. Imprimez un message à l'écran invitant l'utilisateur à entrer un numéro.
  7. Lisez la valeur saisie par l'utilisateur sur la console à partir du clavier.
  8. Imprimez la valeur lue ci-dessus sur la console à côté du 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 la sortie d'erreurs en C ++. Cerr est une instance de la classe ostream. L'objet cerr est sans tampon. Cela signifie qu'il est utilisé lorsqu'un message d'erreur doit être affiché immédiatement.

Puisqu'il n'est pas tamponné, 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 using namespace std;int main() {cerr << "An Error occurred!";return 0;}

Production:

Voici une capture d'écran du code:

Explication du code:

  1. Inclut le fichier d'en-tête iostream dans lequel 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 d'ouverture 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 lors de l'exécution réussie.
  6. Fin du corps de la fonction principale.

std :: sabot

L'objet sabot est une instance de la classe ostream. Il est utilisé pour afficher les erreurs sur l'affichage standard, le moniteur. Il est similaire à l'objet cerr, mais il est mis en mémoire tampon. Comme 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 using namespace std;int main() {clog << "An Error occurred!";return 0;}

Production:

Voici une capture d'écran du code:

Explication du code:

  1. Y compris le fichier d'en-tête iostream dans lequel l'objet sabot 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 obstruer 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 de détails sur l'état du flux, vous pouvez utiliser ces fonctions:

  • good () - retournera true si tout va bien.
  • bad () - retournera true si une erreur fatale se produit.
  • fail () - retournera true après l'échec de l'opération de flux.
  • 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 entré 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 puis vers un périphérique de sortie comme un moniteur.
  • L'objet cin est une instance de la classe istream. Il lit l'entrée 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 sabot est une instance de la classe ostream. Il affiche des messages d'erreur sur les périphériques de sortie.
  • L'objet obstruer met en mémoire tampon les messages d'erreur, contrairement à l'objet cerr.