2010-12-03 46 views
0

Le script sur lequel je travaille est sur une longue page, donc je vais faire le lien (un simple fichier):
http://pastebin.com/7BVHmQGpC++: Boucle infinie avec une simple sélection de menu

Je présente mes excuses pour cela. Mon problème est que je me retrouve dans une boucle infinie dans mon code, par exemple après avoir sélectionné 1 ou 2 pour crypter/décrypter cela me permet d'entrer le mot, et quand j'applique ensuite le "shift" pour le cryptage il exécute une boucle infinie de le menu.

J'avais essayé pendant tant d'heures à débugger, je pensais qu'il était un problème avec cin, par exemple lorsque vous entrez un choix valide, il jette juste une boucle infinie/

Ce qui semble faire les boucles de infininte ?

+0

Peut-être avez-vous besoin d'utiliser char c; cin.get (c); vous deviez le convertir en nombre entier après – GWW

+0

Je pensais que c'était std :: string aussi .. Il est difficile d'accepter son utilisation s'il me le fait à chaque fois. –

Répondre

1

Je pense que vous devriez ignorer le caractère de nouvelle ligne à la place d'un espace

J'ai essayé avec ce qui suit et il fonctionne sur VS2010

cin.ignore(1, '\n'); 
    getline(cin, input); 
+0

Malheureusement, j'ai essayé d'ajouter cela avant les deux, et il boucle à nouveau infinie. :(J'ai même essayé avant tout le 'cin' .C'est tellement confus –

+0

Pouvez-vous essayer this '{while ((cin.peek() ==' \ n ') || (cin.peek() = = '\ r')) cin.get();} ' – Chubsdad

+0

Où est-ce que je le mets, pourquoi y a-t-il des parenthèses qui l'entourent, et veux-tu dire cin au lieu de fin? Merci –

0

Essayez cin.clear, je crois que vous lisez en permanence votre caractère d'entrée initial.

cin >> selection; 
    cin.clear(); 
+0

ça va juste effacer le flags mais pas le buffer – Chubsdad

+0

Woah ... faire ceci fait le tour du menu 4 fois puis attend ma selection .. Ca a fait quelque chose, hein, je vais essayer de voir ce qu'il fait, c'est tellement bizarre pourquoi ca arrive. –

+0

@Chubsdad est correct il efface les drapeaux, mais il semble arrêter votre boucle –

0

This page devrait expliquer tout ce que vous devez savoir.