Ce document en PDF : affichage-cout.pdf
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
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 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;
}
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;
}