2 votes

C++ cin est utilisé dans la boucle while mais l'écran de la console n'est pas maintenu.

J'utilise cin comme condition pour la boucle while où il accepte un entier à moins qu'une fin de fichier ou un caractère soit entré. Mais la fenêtre de la console disparaît juste après le résultat. Comment puis-je maintenir l'écran

#include<iostream>

using namespace std;

int main() {

    int num = 0, sum = 0;

    while (cin >> num) {
        sum += num;
    }

    cout << "Sum is: "
        << sum
        << endl;

    cout << endl;

    cin.get();
    return 0;
}

0voto

Stephan Lechner Points 29375

cin.get() consommera le nouveau caractère de ligne, qui reste dans le flux d'entrée depuis le dernier numéro que vous avez validé avec "enter". Par conséquent, le prochain cin.get() qui doit attendre la prochaine entrée de l'utilisateur avant que la console de sortie ne disparaisse, n'attendra pas d'entrée supplémentaire mais reviendra immédiatement.

Pour résoudre le problème, on pourrait ignorer (cf. cppreference/ignore ) tout jusqu'à (et y compris) la prochaine nouvelle ligne dans le tampon avant de lire l'élément suivant :

int main() {
    int a;

    cin >> a;

    // do something with a, write to console, ...

    cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');        
    cin.get();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X