web-dev-qa-db-fra.com

Sortie immédiate de la boucle 'while' en C ++

Comment quitter une boucle while immédiatement sans aller à la fin du bloc?

Par exemple,

while (choice != 99)
{
    cin >> choice;
    if (choice == 99)
        //Exit here and don't get additional input
    cin>>gNum;
}

Des idées?

13
Meir

Utilisez pause?

while(choice!=99)
{
  cin>>choice;
  if (choice==99)
    break;
  cin>>gNum;
}
52
Andomar
cin >> choice;
while(choice!=99) {
    cin>>gNum;
    cin >> choice
}

Vous n'avez pas besoin d'une pause, dans ce cas.

8
akappa

Utilisez break , comme tel:

while(choice!=99)
{
  cin>>choice;
  if (choice==99)
    break; //exit here and don't get additional input
  cin>>gNum;
}

Cela fonctionne pour pour les boucles également, et c'est le mot clé pour terminer une clause switch. Plus d'informations ici .

6
Elben Shira

break;.

while(choice!=99)
{
   cin>>choice;
   if (choice==99)
       break;
   cin>>gNum;
}
3
Charlie Martin

Oui, la pause fonctionnera. Cependant, vous pouvez constater que de nombreux programmeurs préfèrent ne pas l'utiliser lorsque cela est possible, plutôt utiliser une instruction conditionnelle if pour effectuer autre chose dans la boucle (donc, ne pas l'exécuter et quitter la boucle proprement)

Quelque chose comme ça va réaliser ce que vous recherchez, sans avoir à utiliser une pause.

while(choice!=99) {
    cin >> choice;
    if (choice != 99) {
        cin>>gNum;
    }
}
3
Danny Battison

hmm, break?

2
Remus Rusanu
while(choice!=99)
{
  cin>>choice;
  if (choice==99)
    exit(0);
  cin>>gNum;
}

Croyez-moi, cela sortira de la boucle. Si cela ne fonctionne pas, rien ne fonctionnera. Attention, ce n'est peut-être pas ce que vous voulez ...

1
Will Hartung

Ouais, je suis presque sûr que tu viens de mettre

    break;

là où vous voulez qu'il sorte

comme

    if (variable == 1)
    {
    //do something
    }
    else
    {
    //exit
    break;
    }
1
Chris Stryker

Essayer

break;
0
Dario