HOWTO · C++
Comment attendre la saisie de l'utilisateur en C++
Cet article présente les méthodes permettant d'attendre la saisie de l'utilisateur en C++
Sur cette page
Cet article présentera les méthodes C++ permettant d’attendre les entrées de l’utilisateur. Notez que le tutoriel suivant suppose que le contenu des entrées de l’utilisateur n’est pas pertinent pour l’exécution du programme.
Utilisez la méthode cin.get() pour attendre l’entrée de l’utilisateur
La fonction membre get() est std:cin, qui fonctionne presque comme un opérateur d’entrée >> qui extrait le(s) caractère(s) du flux. Dans ce cas, lorsque nous ne sommes pas intéressés par le traitement de l’entrée de l’utilisateur et que nous devons seulement implémenter la fonctionnalité wait, nous pouvons appeler la fonction get sans aucun argument. Notez, cependant, que cette fonction revient lorsque la touche Enter est pressée.
#include <iostream>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<char> arr = {'w', 'x', 'y', 'z'};
int flag;
flag = cin.get();
for (auto const& value : arr) cout << value << "; ";
cout << "\nDone !" << endl;
return EXIT_SUCCESS;
}
Production:
w; x; y; z;
Done !
Utiliser la fonction getchar pour attendre l’entrée de l’utilisateur
La fonction getchar est la fonction de bibliothèque standard en C permettant de lire un seul caractère du flux d’entrée (stdin). Comme la précédente, cette méthode attend le retour d’un nouveau caractère de ligne (c’est-à-dire l’appui sur la touche Enter). Le caractère getchar retourne eof en cas d’erreur ou lorsque la fin du flux est rencontrée.
#include <iostream>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<char> arr = {'w', 'x', 'y', 'z'};
int flag;
flag = getchar();
for (auto const& value : arr) cout << value << "; ";
cout << "\nDone !" << endl;
return EXIT_SUCCESS;
}
Utilisez la fonction getc pour attendre l’entrée de l’utilisateur
Comme alternative, nous pourrions remplacer l’exemple ci-dessus par la fonction getc. On passe à getc l’argument FILE *stream pour lire à partir d’un flux d’entrée donné, mais dans ce cas, on passe à stdin, qui est le flux d’entrée standard communément associé à l’entrée du terminal. Cette fonction revient également lorsque la touche Enter est appuyée.
#include <iostream>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<char> arr = {'w', 'x', 'y', 'z'};
int flag;
flag = getchar();
for (auto const& value : arr) cout << value << "; ";
cout << "\nDone !" << endl;
return EXIT_SUCCESS;
}
Évitez d’utiliser system("pause") pour attendre l’entrée de l’utilisateur
La fonction system est utilisée pour exécuter des commandes shell et le nom de la commande est passé sous forme de chaîne de caractères littérale. Ainsi, si une pause est passée en argument, elle tente d’exécuter la commande correspondante, qui n’est disponible que sur les plates-formes Windows. Il est préférable d’implémenter une fonction d’attente personnalisée avec les méthodes énumérées ci-dessus que d’utiliser une méthode non portable de system("pause").
#include <iostream>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<char> arr = {'w', 'x', 'y', 'z'};
int flag;
system("pause");
for (auto const& value : arr) cout << value << "; ";
cout << "\nDone !" << endl;
return EXIT_SUCCESS;
}
Production:
sh: 1: pause: not found
w; x; y; z;
Done !