Entrée-sortie en C++ - cin et cout

25 Sep 2019 25 Sep 2019 38161 vues ESSADDOUKI Mostafa 4 min de lecture
Introduction et syntaxe de base
1 Introduction au langage C++ 2 Entrée-sortie en C++ - cin et cout 3 Inférence de type avec le mot-clé auto en C++ 4 Classe std::string et les chaînes de caractères en C++ 5 Les structures conditionnelles (if et switch) en C++ (C++17 et C++20) 6 Les boucles en C++ (C++17 et C++20) 7 La gestion des fichiers en C++
Pointeurs et fonctions
8 Introduction aux pointeurs en C++ - Déclaration et interêts 9 Les références en C++ - déclaration et interêts 10 Les tableaux en C++ - Déclaration et interêts 11 Introduction aux fonctions en C++ 12 Passer des arguments à une fonction en C++ 13 Déclarer un paramètre const en C++ 14 Les fonctions Lambda en C++ 15 Fonctions utiles (Mathématiques et caractères) en C++
Programmation OO
16 Classes et objets en C++ 17 Spécificateurs d'accès en C++ 18 Constructeurs et destructeur d'une classe en C++ 19 Fonctions membres en C++ 20 Membres statiques d'une classe en C++ 21 Fonctions en ligne en C++ - inline 22 Fonctions et classes amies en C++ - friend 23 Surcharge des fonctions en C++ 24 Surcharge des opérateurs en C++ 25 Héritage en C++ 26 La gestion d'exceptions en C++ : déclaration, utilisation et personnalisation 27 fonctions et classes templates en C++ 28 Les nouveautés C++20 pour améliorer les templates en C++
Structures de données
29 Introduction aux structures de données 30 Les structures en C++ et la différence avec les structures en C 31 Les listes chaînées en C++ 32 Les piles en C++ 33 File d'attente en C++ 34 Arbre binaire de recherche : définition et mise en oeuvre en C++
La bibliothèque standard (STL)
35 Introduction à la bibliothèque de Template Standard STL 36 Les itérateurs en C++ - définition, déclaration et exemples 37 La classe array en C++ (bibliothèque STL) <array> 38 La classe vector de la bibliothèque STL <vector> 39 La classe deque en C++ ( Bibliothèque STL) 40 La classe list en C++ (bibliothèque STL) <list> 41 La classe stack (Pile) en C++ (bibliothèque STL) <stack> 42 La classe queue (File d'attente) en C++ (bibliothèque STL) <queue> 43 La file d'attente prioritaire (classe priority_queue) - Bibliothèque STL 44 Les ensembles en C++ (Classe set <set> - Bibliothèque STL) 45 Les dictionnaires en C++ : Classe map (Bibliothèque STL) 46 Introduction aux algorithmes de la bibliothèque STL (programmation compétitive) 47 Tri et méthodes associées en C++ - Bibliothèque STL 48 Recherche dichotomique et méthodes associées en C++ - Bibliothèque STL 49 Appliquer un prédicat ou une fonction aux éléments d'une séquence en C++ - Bibliothèque STL 50 Recherche dans une séquence et méthodes associées en C++ - Bibliothèque STL

En C++, les entrées et sorties (E/S) sont gérées via des flux (streams) : des séquences d'octets qui circulent entre le programme et les périphériques (clavier, écran, fichier…). La bibliothèque standard fournit tout le nécessaire dans les fichiers d'en-tête suivants.

Fichiers d'en-tête E/S

En-têteContenu
<iostream>Objets de flux standards : cin, cout, cerr, clog
<iomanip>Manipulateurs de flux formatés : setw, setprecision, fixed
<fstream>Flux de fichiers : ifstream, ofstream, fstream

Flux de sortie — cout

cout cout est l'instance de la classe ostream connectée à la sortie standard (écran). On y insère des données avec l'opérateur << (opérateur d'insertion).

  Exemple

#include <iostream>
using namespace std;

int main()
{
    int age = 20;
    cout << "Bonjour !" << endl;
    cout << "Age : " << age << endl; // cout détecte automatiquement le type
    return 0;
}
Sortie
Bonjour !
Age : 20
Chaînage de l'opérateur << On peut enchaîner plusieurs insertions sur une même ligne : cout << "x = " << x << ", y = " << y << endl; endl insère un saut de ligne et vide le tampon.

Flux d'entrée — cin

cin cin est l'instance de la classe istream connectée à l'entrée standard (clavier). On en extrait des données avec l'opérateur >> (opérateur d'extraction).

  Exemple 1 — lire une chaîne

#include <iostream>
using namespace std;

int main()
{
    char nom[50];
    cout << "Saisir votre nom : ";
    cin >> nom;
    cout << "Bonjour " << nom << endl;
    return 0;
}
Sortie
Saisir votre nom : Mostafa
Bonjour Mostafa

  Exemple 2 — lire plusieurs valeurs

char nom[50];
int age;
cout << "Nom et age : ";
cin >> nom >> age; // chaînage de l'opérateur >>
cout << "Nom = " << nom << " - Age = " << age << endl;
Sortie
Nom et age : Mostafa 32
Nom = Mostafa - Age = 32

Flux d'erreur — cerr

cerr cerr est connecté à la sortie d'erreur standard. Contrairement à cout, il est non mis en mémoire tampon : chaque message s'affiche immédiatement, sans attendre que le tampon soit plein.

  Exemple

#include <iostream>
using namespace std;

int main()
{
    cerr << "Erreur : impossible de trouver le fichier." << endl;
    return 0;
}
Sortie (erreur)
Erreur : impossible de trouver le fichier.

Flux de journaux — clog

clog clog est également connecté à la sortie d'erreur, mais il est mis en mémoire tampon : les messages sont accumulés dans un tampon et n'apparaissent qu'une fois le tampon plein ou vidé explicitement. Cela le rend plus performant pour les messages de journalisation fréquents.

  Exemple

clog << "Log : démarrage du module de traitement." << endl;

Résumé comparatif des flux

ObjetClasseDestinationMis en tampon ?Usage recommandé
coutostreamSortie standardOuiAffichage normal
cinistreamEntrée standardOuiLecture clavier
cerrostreamErreur standardNonMessages d'erreur immédiats
clogostreamErreur standardOuiJournalisation (logs)
Bonne pratique Utilisez cerr pour les messages d'erreur critiques (affichage immédiat garanti) et clog pour les traces de journalisation non urgentes (meilleure performance grâce au tampon).

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.