-2
votes

Obtenir une erreur "Le code n'excédera jamais" lors de l'utilisation de la fonction de vérification du mot de passe en C ++ e

Je mettais une boucle DO / TIX dans ma fonction de mot de passe, mais cela ne fonctionne pas. J'utilise xcode10 sur le code C ++ et lorsque j'utilise un point-virgule après l'instruction tandis que l'instruction affiche une erreur indique que le code de distinction n'exécutera jamais xxx

je voulais mettre cette boucle et quelques autres choses afin que je puisse dire Faites cette boucle infinie jusqu'à ce que vous entriez le mot de passe correct.


1 commentaires

Alors, quand pensez-vous que pendant que sera exécuté? De plus, retour (0); pour la construction std :: string a un comportement non défini.


3 Réponses :


1
votes

Eh bien dans votre relevé si Vous revenez dans les deux cas entraînant l'arrêt de la fonction afin qu'il ne puisse jamais entrer dans la condition de la tester xxx


1 commentaires

Hey! Donc, j'ai enlevé la fonction de retour de si et sinon, il ne fonctionne toujours pas. le faire pendant que la boucle. Si je saisis le mot de passe correct, il continue, je saisi le mauvais mot de passe, la sortie affiche un mot de passe incorrect et cesse. Il affiche un mot de passe incorrect et c'est comme ça. Entrez le mot de passe pas de mot de passe incorrect (11db). J'utilise Xcode pour C ++.



0
votes

Il y a une déclaration de retour dans le " si " et aussi dans " sinon ". Vous pouvez voir que peu importe ce qui sera le résultat de ch.compare (g) , la fonction reviendra à son appelant.

C'est pourquoi il ne fera jamais le " pendant ".

Essayez de définir les instructions de retour dans un endroit différent dans le code :)


0 commentaires

0
votes

Vous devez vérifier si vous avez également une entrée, en cas de EOF code>.

string password() { // you don't need g as parameters in, your overwriting it
    string const ch = "hello"; // make ch const to show it not supposed to change
    cout << "Enter password";
    string g; // defining g here since now you need it
    while (getline(cin, g)) { // check that the read from cin is OK
        if (ch != g) { // simple notation for comparing two strings. There's also == available
            cout << "INCORRECT PASSWORD. Please try again\n"; // no return if you want to try again
        } else {
            cout << "correct password";
            return g; // you could also return ch here since they have the same content
        }
    }
    cout << "Unable to read line. aborting\n"; // not really a lot you can do if there is no input to read.
    return string(); // returning empty string.
}


0 commentaires