User Tools

Site Tools


in204:cpp:syntax:cincout

Ecrire et lire des valeurs à partir de la console

Utiliser les fonctions C

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);
}

Utiliser les opérateurs C++

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 lecture

Les différents objets flux accédant à la console

La 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 uniquement

Afficher la valeur d'une variable

Nous 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) 

Afficher un message d'erreur sur le flux ''stderr''

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)
 

Lire une valeur à partir de la console

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.

in204/cpp/syntax/cincout.txt · Last modified: 2022/11/18 10:50 (external edit)