Affichage avec cout en C++

Ce document en PDF : affichage-cout.pdf


C++

C++ est un langage de programmation compilé (initialement créé par Bjarne Stroustrup dans les années 1980) permettant la programmation sous de multiples paradigmes (comme la programmation procédurale, orientée objet ou générique). Ses bonnes performances, et sa compatibilité avec le C en font un des langages de programmation les plus utilisés dans les applications où la performance est critique. [source : wikipedia.org]

Lien : www.cplusplus.com

Les exemples

affichage-cout-src.zip

cout

Il existe trois flux de base pour chaque processus :

  • stdin (0) : Entrée standard (par défaut le clavier)
  • stdout (1) : Sortie standard (par défaut l’écran)
  • stderr (2) : Sortie erreur (par défaut l’écran également)

Un flux est un canal destiné à transmettre ou à recevoir de l’information. Il peut s’agir de fichier ou de périphériques.

cin, cout et cerr existent dans l’espace de nom std mais pourrait exister dans d’autres espaces de noms. Le nom complet pour y accéder est normalement std::cin. L’opérateur :: permet la résolution de portée en C++.

Pour afficher des sorties à l’écran (sur la sortie standard stdout), on utilisera cout en C++.

Le nom cout (character output stream) désigne le flux de sortie standard (l’écran par défaut). Les caractères “placés dans cout” au moyen de l’opérateur de sortie « aparaîtront à l’écran.

Liens :

L’opérateur d’entrée « agit sur un flux de type ostream. Et L’opérateur d’entrée » agit sur un flux de type istream.

Liens :

Exemple 1 : l’affichage de variables

#include <iostream>

using namespace std;

int main()
{
    int e = 5;
    double d = 1.5;
    string s = "Hello";

    cout << "La valeur de e est " << e << endl;
    cout << "La valeur de d est " << d << endl;
    cout << "La valeur de s est " << s << endl;

    return 0;
}

Le formatage du flux de sortie

Le fichier d’en-tête iomanip fournit quelques fonctions de formatage comme setfill() (pour le remplissage) et setw() (pour la largeur).

Lien : iomanip

Exemple 2 : formatage de l’affichage

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    int heure = 7;
    int minute = 5;
    int seconde = 1;
    
    cout << "Il est " << setfill('0') << setw(2) << heure << ":" << setfill('0') << setw(2) << minute << ":" << setfill('0') << setw(2) << seconde << endl; // Il est 07:05:01
    
    return 0;
}

Il est possible de définir la précision décimale à utiliser pour formater les nombres à virgule flottante sur les opérations de sortie avec setprecision(). On a aussi le choix entre deux écritures : fixed et scientific (avec une partie exponentielle).

Exemple 3 : les nombres à virgule flottante

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    double d = 3.14159;

    cout << setprecision(5) << d << '\n';
    cout << setprecision(9) << d << '\n';
    
    cout << fixed;
    cout << setprecision(5) << d << '\n';
    cout << setprecision(9) << d << '\n';

    cout << scientific;
    cout << d << '\n';
    
    return 0;
}

Remarque : la fonction endl insère un saut de ligne (\n) dans le flux et provoque l’écriture immédiate du tampon en sortie (un flush). Il existe aussi la fonction ends qui insère un caractère nul ('\0') dans le flux. Le caractère nul peut servir à marquer le fin d’une chaîne de caractères (en C).

Pour les entiers, il est possible d’indiquer la base avec setbase() ou d’utiliser directement avec hex, dec ou oct.

Exemple 4 : les entiers

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    int n = 0x55;
    int base = 0;

    base = 8; // octal
    cout << "En base " << setbase(10) << base << " : ";
    cout << oct << n << endl;
    
    base = 10; // décimal
    cout << "En base " << setbase(10) << base << " : ";
    cout << dec << n << endl;

    base = 16; // hexadécimal
    cout << "En base " << setbase(10) << base << " : ";
    cout << hex << n << endl;
    
    return 0;
}

Liens : put_time et get_time

Exemple 5 : horodatage

#include <iostream>
#include <iomanip>
#include <ctime>
#include <chrono>   // chrono::system_clock
 
using namespace std;

int main()
{
    time_t tt = chrono::system_clock::to_time_t(chrono::system_clock::now());
    tm *ptm = localtime(&tt);

    //cout << put_time(ptm, "%c") << '\n';
    cout << put_time(ptm, "%d/%m/%Y %H:%M:%S") << '\n';
    
    return 0;
}

Voir aussi