web-dev-qa-db-fra.com

Pause de la console en C ++?

En C #, vous pouvez amener la console à attendre la saisie d'un caractère (ce qui est utile pour pouvoir voir les dernières sorties d'une console avant que le programme ne se termine). En tant que débutant en C++, je ne sais pas quel est l'équivalent. Est-ce qu'il y a un?

23
RCIX

La manière la plus simple est simplement:

std::cin.get();

Vous pouvez imprimer quelque chose comme "Appuyez sur n'importe quelle touche pour continuer ..." avant cela. Certaines personnes vous parleront

system("pause");

Mais ne l'utilisez pas. Ce n'est pas portable.

35
reko_t
#include <stdio.h>
// ...
getchar();

La fonction attend une seule pression sur une touche et renvoie sa valeur (entière).

Par exemple, j'ai une fonction qui fait la même chose que System("pause"), mais sans exiger que "pause.exe" (qui est un ensemble de sécurité potentiel, btw):

void pause()
{
  std::cout << std::endl << "Press any key to continue...";
  getchar();
}
5
Mephane

Il n'y a rien dans la norme, et rien de multiplateforme. La méthode habituelle consiste à attendre que <Entrée> soit enfoncée, puis à ignorer le résultat.

3

La solution incorrecte serait d'utiliser system("pause") car cela crée des failles de sécurité (pause.exe malveillant dans le répertoire!) Et n'est pas multiplateforme (la pause n'existe que sur Windows/DOS).

Il existe une solution plus simple:

void myPause() {
    printf("Press any key to continue . . .");
    getchar();
}

Cela utilise getchar(), qui est compatible POSIX (voir this ). Vous pouvez utiliser cette fonction comme ceci:

int main() {
    ...
    myPause();
}

Cela empêche efficacement la console de clignoter puis de se fermer.

1
Adrian Zhang