La définition de Iostream en C++

Jinku Hu 12 octobre 2023
La définition de Iostream en C++

Ce guide explique comment utiliser la bibliothèque d’entrée/sortie de base en C++.

Utiliser l’en-tête <iostream> pour inclure des objets de flux globaux dans C++

La bibliothèque d’entrée/sortie est la partie centrale de la STL C++ utilisée par presque tous les programmes du monde réel. Les opérations d’E/S C++ sont résumées sous la forme de flux, qui peuvent être considérés comme des séquences de données génériques. Une abstraction de flux est implémentée à l’aide de plusieurs classes héritées et est exposée à l’utilisateur sous forme d’objets nommés différents spécialisés pour certaines opérations d’E/S. Notez que la bibliothèque d’E/S basée sur les flux dans son ensemble peut être utilisée pour imprimer du texte sur la console ou lire/écrire des données à partir de fichiers sur le disque. Vous pouvez considérer la bibliothèque de flux comme le principal moyen pour le programme C++ d’interagir avec le système de fichiers et les périphériques.

Les deux classes de flux essentielles sont istream et ostream, correspondant aux flux utilisés pour lire et écrire les données. Ces classes fournissent des opérations sur les flux de caractères. Il existe quatre objets de flux globaux fréquemment utilisés par les programmes pour effectuer des opérations telles que la saisie de l’utilisateur ou l’impression des messages d’erreur. Ces objets sont :

  • cout : il représente un flux de sortie standard correspondant au stdout en C.
  • cin : c’est le flux d’entrée standard (correspond à stdin).
  • cerr : c’est le flux d’erreur standard implémenté sous forme de flux sans tampon (correspond à stderr).
  • clog : c’est le flux de journalisation standard qui n’a pas d’équivalent C, et il propose la version bufferisée de cerr.

Une autre partie importante de la bibliothèque de flux d’E/S est constituée d’opérateurs qui sont utilisés pour enchaîner les opérations entre différents objets. L’opérateur <<, appelé opérateur d’insertion de flux, pousse les données dans un objet de flux. D’autre part, l’opérateur >> est appelé extracteur de flux. Notez que ces opérateurs effectuent généralement des opérations de décalage sur des types arithmétiques, mais ils sont implémentés comme des opérateurs surchargés dans ce cas.

Dans l’exemple suivant, nous vous montrons l’utilisation de base des classes d’E/S basées sur les flux C++. Nous utilisons l’objet cout pour afficher le contenu de la chaîne vers la console. Puisque le cout correspond à un flux de sortie standard, nous utilisons l’opérateur d’insertion pour insérer les données, et elles sont généralement imprimées sur la console. Notez que l’objet endl est appelé un manipulateur qui génère un caractère de nouvelle ligne et vide le tampon de sortie.

Les manipulateurs de flux sont de différents types, il y a ceux qui modifient l’entrée/sortie comme endl, et il y en a qui forcent l’objet de flux à interpréter l’entrée/sortie différemment. Ces derniers incluent les manipulateurs de base de nombres comme : dec, hex et oct.

#include <iostream>
#include <string>

using std::cerr;
using std::cout;
using std::endl;
using std::string;

int main() {
  string str1("what does iostream mean?");

  cout << str1 << endl;
  cout << str1 << " - " << str1 << endl;

  return EXIT_SUCCESS;
}

Production:

what does iostream mean ? what does iostream mean ? -what does iostream mean ?

Comme indiqué dans le programme précédent, la fonctionnalité la plus puissante des opérateurs de flux et des objets est d’être enchaînés séquentiellement plusieurs fois. Dans ce cas, nous voyons que nous pouvons combiner les valeurs littérales avec d’autres variables pour les pousser toutes vers un flux cout. Ensuite, nous utilisons les objets cin et cerr pour lire l’entrée utilisateur et imprimer les données lues.

Notez que l’objet du type qui doit être lu doit être déclaré à l’avance comme le nombre flottant x. Une autre propriété utile des opérateurs d’insertion/extraction est qu’ils renvoient une valeur non nulle si l’opération a échoué. Alternativement, vous pouvez utiliser les fonctions membres fail et bad pour vérifier si l’objet de flux donné a rencontré des erreurs spécifiques.

#include <iostream>
#include <string>

using std::cerr;
using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  float x;

  cout << "enter float: ";
  if (!(cin >> x)) {
    cerr << "error while reading the floating point value!" << endl;
    return EXIT_FAILURE;
  }
  cout << x;

  return EXIT_SUCCESS;
}

Production:

error while reading the floating point value !
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - C++ IO