Les entrées-sorties, c'est à dire les opérations de lecture à partir du clavier, d'un fichier disque ou d'un périphérique, et les écritures à l'écran, sur disque, imprimante ou périphérique, sont parmi les opérations les plus fréquentes sur ordinateur. La bibliothèque « iostream » fournie, entre autre, trois objets qui représentent les flots standard.
Remarque : Les flots standard sont réglés par le système d'exploitation, et lorsque nous les utilisons, nous communiquons avec les périphériques au travers du système d'exploitation. Il est possible de choisir les entrées et les sorties qui seront définies comme standard. Par exemple, nous pouvons décider que la sortie standard sera l'imprimante, auquel cas, à chaque fois que l'on communiquera un message sur la sortie standard, le message sera en définitive imprimé. Par défaut, l'entrée, la sortie et les erreurs standard sont positionnées sur le terminal (la console) de l'ordinateur. Ce qui veut dire que l'entrée standard représente le clavier, et que la sortie standard et les erreurs standard représentent l'écran.
L'objet qui représente le flot standard doit impérativement être écrit en premier, suivi du symbole de redirection « >> » ou « << », suivi ensuite, soit de constantes littérales, soit de variables qui peuvent être de n'importe quel type prédéfini. Il est possible d'enchaîner plusieurs symboles de redirection entre les variables ou les constantes littérales.
Remarque : Le symbole de redirection indique le sens du transfert de l'information. Dans le cas d'un périphérique d'entrée, il faut prendre « >> », dans le cas d'un périphérique de sortie, il faut prendre « << ».
| #include <iostream.h> // Cette inclusion est obligatoire pour utiliser les objets ci-dessous | |
cin |
Représente l'entrée standard. En général, cin permet de lire les données depuis le terminal de l'ordinateur. Sauf réglage contraire, il s'agit donc du clavier. cin >> x ; // Clavier ==> Variable x L'opérateur de redirection « >> » sert à assurer le transfert de l'information issue du clavier de l'ordinateur vers la variable x. Le sens de lecture va donc de la gauche vers la droite. La variable x peut-être ne n'importe quel type prédéfini, par contre, il n'est pas possible de placer à cet endroit une constante littérale. |
cout |
Représente la sortie standard. En général, cout permet d'écrire des données pour le terminal de l'ordinateur. Sauf réglage contraire, il s'agit donc de l'écran. cout << x ; // Ecran ==> Variable x L'opérateur de redirection « << » sert à assurer le transfert de l'information issue de la variable x vers l'écran de l'ordinateur. Le sens de lecture va donc de la droite vers la gauche. La variable x peut-être de n'importe quel type prédéfini. Il est possible d'enchaîner plusieurs opérateurs de redirections. cout << « La valeur de x est : » << x ; |
cerr |
Représente les erreurs standard. Là aussi, c'est généralement l'écran qui est utilisé, et la syntaxe est identique à cout. cerr << « erreur de transmission » ; |
Remarque : Lorsqu'on désire envoyer un message vers le périphérique extérieur, la syntaxe à utiliser est de placer le texte entre guillemets. En informatique, ce texte est appelé « chaîne de caractères » (suite de caractères). Pour être encore plus précis, ce texte est appelé « constante littérale chaîne ».

Nous verrons plus tard que les objets disposent en leur sein, des méthodes qui proposent un certain nombre d'actions. Une méthode est une fonction, mais on l'appelle méthode parce que c'est une fonction membre (fait parti de l'objet) et se repère comme pour les autres fonctions à l'aide des parenthèses. Dans l'exemple proposé, nous utilisons la méthode « get » de l'objet « cin ». Il suffit alors d'utiliser l'opérateur « . » pour bien séparer la méthode de l'objet. Lorsque nous écrivons : « cin.get() ; » Cela veut bien dire, j'utilise la méthode get de l'objet cin.
Il existe un certain nombre de manipulateurs qui offrent pas mal de possibilités de formatage des informations que l'on envoie vers l'écran. Ceux sont des manipulateurs qui généralement imposent un affichage particulier de l'information autre que celui proposé par défaut.

Le manipulateur « endl » qui veut dire « end-line » indique que c'est la fin de la ligne en cours et demande au curseur de se placer au début de la ligne suivante. C'est ce qui s'appelle tout simplement aller à la ligne.
Il est possible de formater l'information qui est d'envoyer à l'écran plutôt que d'avoir la présentation par défaut. On utilise alors des manipulateurs qui sont des opérateurs prédéfinis et qui modifient la valeur envoyée pour que sa présentation soit plus adaptée. La syntaxe est relativement simple, il suffit de placer le manipulateur à la suite de l'opérateur de redirection :
Flot << manipulateur // pour un flot de sortie
Flot >> manipulateur // pour un flot d'entrée
| #include <iomanip.h> // Cette inclusion est obligatoire pour utiliser les manipulateurs ci-dessous | |
dec |
Conversion décimale pour les valeurs entières (comportement par défaut). |
hex |
Conversion hexadécimale pour les valeurs entières. |
oct |
Conversion octale (base 8) pour les valeurs entières. (la conversion binaire n'est pas proposée). |
endl |
Aller à la ligne |
left |
Alignement à gauche |
right |
Alignement à droite |
showpoint / noshowpoint |
Affichage du point décimale lorsqu'on utilise des réels et qu'il n'y a pas de parties décimales. |
uppercase / nouppercase |
Affichage des caractères hexadécimaux en majuscule. |
showpos / noshowpos |
Affichage des nombres positifs précédés du signe + |
scientific |
Notation scientifique des nombres réels : 1.569 e+01 |
fixed |
Notation « point fixe » pour les nombres réels : 10.569 |

Avec ce type de manipulateur, vous remarquez que nous n'avons pas besoin de repréciser le même traitement pour les variables qui suivent. Une fois que l'on place un manipulateur, il reste actif. Si vous désirez réobtenir le comportement par défaut, vous devez appliquez le manipulateur adéquat.
Le principe est identique que pour les manipulateurs précédents, toutefois, ils comportent en plus un paramètre qui dépend du manipulateur choisi.
| #include <iomanip.h> // Cette inclusion est obligatoire pour utiliser les manipulateurs paramétrés ci-dessous | |
setw (nombre) |
Définit le gabarit de la variable à afficher avec une justification à droite par défaut. Si la valeur à afficher est plus importante que le gabarit, cette valeur ne sera pas tronquée et sera donc affichée de façon conventionnelle. Le manipulateur « setw » doit être utilisé pour chacune des informations à afficher. |
setfill (caractère) |
Définit le caractère de remplissage lorsqu'on utilise un affichage avec la gestion de gabarit. Par défaut, le caractère de remplissage est l'espace. |
setprecision (nombre) |
Permet de définir le nombre de chiffres significatifs pour les nombres réels. C'est uniquement pour l'affichage, la variable garde sa précision, et la valeur affichée est arrondie. Lorsque l'on utilise au préalable le manipulateur « fixed », le manipulateur « setprecision » permet d'indiquer le nombre de chiffres significatifs après la virgule. |

En ce qui concerne « setw », sachez que ce manipulateur définit uniquement le gabarit de la prochaine information à écrire. Si l'on ne fait pas de nouveau appel à « setw » pour les informations suivantes, celles-ci seront écrites suivant les conventions habituelles, à savoir en utilisant l'emplacement minimal nécessaire pour les écrire.