web-dev-qa-db-fra.com

C ++ attendre la saisie de l'utilisateur

Quel serait le meilleur moyen d'attendre la saisie de l'utilisateur dans l'application console?

std::cout << "press any key to exit...";
// wait for user to hit enter or another key
90
Ivars

Pour ce faire, voici plusieurs méthodes possibles:

  1. Utilisez getch() (besoin de #include <conio.h>).

  2. Utilisez getchar() (attendu pour Enter, besoin de #include <iostream>).

  3. Utilisez cin.get() (attendu pour Enter, besoin de #include <iostream>).

  4. Utilisez system("pause") (besoin de #include <iostream>).

    PS: Cette méthode imprimera également Press any key to continue . . . à l'écran. (semble un choix parfait pour vous :))


Edit: Comme indiqué ici , il n’existe pas de solution totalement portable pour cela. La question 19.1 de la FAQ comp.lang.c aborde cette question de manière plus approfondie, avec des solutions pour Windows, des systèmes de type Unix et même MS-DOS et VMS.

157
herohuyongtao

une boucle do while serait un bon moyen d'attendre l'entrée de l'utilisateur. Comme ça:

int main() 
{

 do 
 {
   cout << '\n' << "Press a key to continue...";
 } while (cin.get() != '\n');

 return 0;
}

Vous pouvez également utiliser la fonction system('PAUSE') mais je pense que cela est un peu plus lent et dépend de la plate-forme.

9
CMS

Il n’existe pas de fonction de bibliothèque "standard" pour cela. La norme (peut-être étonnamment) ne reconnaît pas réellement le concept de "clavier", bien qu’elle ait une norme pour "entrée de console".

Il existe différentes manières de le réaliser sur différents systèmes d'exploitation (voir la solution de herohuyongtao), mais il n'est pas portable sur toutes les plates-formes prenant en charge la saisie au clavier.

N'oubliez pas que C++ (et C) sont conçus pour être des langages pouvant s'exécuter sur des systèmes embarqués sans clavier. (Cela dit, un système intégré peut ne pas avoir divers autres périphériques pris en charge par la bibliothèque standard).

Cette question a été débattue pendant longtemps.

3
CashCow

Tu peux essayer

#include <iostream>
#include <conio.h>

int main() {

    //some codes

    getch();
    return 0;
}
3
JustCode