En C, vous avez utilisé la fonction printf
pour écrire des résultats sur le terminal. Pour lire les données à partir du terminal, il est possible d'utiliser la fonction scanf
.
Il est possible d'utiliser l'ensemble des fonctions C++ en C. Pour ce faire en C, pour pouvoir utiliser printf
, il est nécessaire de charger le fichier contenant le prototype de la fonction printf
, c'est à dire, d'insérer l'instruction suivante :
#include<stdio.h> int main() { printf("Le résultat est %d.\n", 3); }
En C++, il est préférable de charger l'entête cstdio
, le c
devant le stdio
indiquant qu'il s'agit d'un fichier d'entête relative à des fonctions C.
#include<cstdio> int main() { printf("Le résultat est %d.\n", 3); }
C++ offre un ensemble d'objets et d'opérateurs permettant de lire et d'écrire d'une manière totalement homogène dans des flux. Nous verrons plus en avant comment manipuler les flux, définir les méthodes de lectures et d'écritures d'objets complexes dans les flux.
Pour l'instant nous nous intéressons uniquement à écrire les valeurs contenues dans des variables sur la console. Pour ce faire, nous devons charger la définition des classes et des opérateurs permettant d'accéder à la console et d'écrire sur un flux ou de lire à partir d'un flux.
#include<iostream> int main() { int value = 3; std::cout "Le résultat est " << value << std::endl; }
L'objet std::cout
est un objet qui permet d'accéder à la console en écrire.
L'opérateur operator «
est l'opérateur d'écriture qui transfère la valeur de value
vers l'objet le flux std::cout
. Comme la direction est de la variable ou de la chaîne de caractère vers le flux, il s'agit d'une opération d'écriture.
Plus spécifiquement, la console défini trois flux :
stdout
le flux d'écriture des messages,stderr
le flux d'écriture des messages d'erreurs,stdin
le flux de lectureLa bibliothèque standard de C++ (STL) définit trois objets permettant d'accéder aux différents flux :
std::cout
accède au flux d'écrire des messages en écriture uniquement,std::cerr
accède au flux d'écriture des messages d'erreurs en écriture uniquement,std::cin
accède au flux de lecture des messages en lecture uniquementNous pouvons écrire plusieurs contenus à la fois en écrivant ainsi :
std::cout << "Les valeurs (x,y) sont " << x // Ecrit le contenu de la variable x << y << std::endl; // Ecrit le contenu de la variable y // ainsi qu’un saut de ligne (std::endl)
Pour écrire un message d'erreur, la syntaxe est identique :
std::cerr << "Une erreur s'est produite et a retourné le message suivant " << anException.message() // Affiche le message d'erreur de l'objet anException << std::endl; // ainsi qu’un saut de ligne (std::endl)
L'opérateur operator »
est l'opérateur de lecture. Il transfère la valeur du flux vers la variable Comme la direction est de la variable ou de la chaîne de caractère vers le flux, il s'agit d'une opération de lecture.
int maxNumberOfIterations; std::cout << "Nombre d'itérations ?"; std::cin >> maxNumberOfIterations; std::cout << "Exécute " << maxNumberOfIterations << " les opérations" << std::endl;
Ce code demande à l'utilisateur d'entrer le nombre d'itérations et attend que l'utilisateur fournisse les informations demandées. Les données entrées par l'utilisateur sont converties en un nombre entier et affectées à la variable maxNumberOfIterations
.
Cependant, il est possible de lire plusieurs variables en une seule opération :
int mont, year; std::cout << "Entre le mois et l'année sous la forme 'mm/AA' ?"; std::cin >> month >> "/" >> year;
Dans ce cas, il est attendu que l'utilisateur entre une chaîne de caractères de la forme : “09/19” pour septembre 2019 et cette chaine de caractère va être décomposé en trois composantes, une première composante correspondant à “09” suivi d'une composant “/” puis d'une troisième composante composée par “19”. La première et la dernière composante seront converties en un nombre entier et affectée respectivement à la variable month
et la variable year
.