Exercice palindrome (Partie I - chapitre 8 ): erreur dans la gestion des erreurs d'entrées avec "while(!(std::cin >> ...))

a marqué ce sujet comme résolu.

Bonjour tout le monde ! Je viens de commencer le tuto de c++ et j’en suis à l’exercice du palindrome de la partie I - chapitre 8. La correction du tuto ne prévoit de gestion des erreurs d’entrées comme dans l’exercice "Gérer les erreurs d’entrée - Partie II" de la partie I - chapitre 6 dont je me suis inspirée.

En effet, je ne comprends pas pourquoi dans mon code si je rentre un nombre, le script continue comme si de rien n’était sans enclencher le message d’erreur… Quelqu’un aurait-il une idée SVP? Merci d’avance !!

// Exercice Palindrome
#include <iostream>
#include <string>
#include <algorithm>

int main() {
    std::cout << "Bienvenu sur ce programme de test de palindrome \n";
    std::cout << "Veuillez rentrer votre mot a tester: ";

    std::string mot{  };
    while (!(std::cin >> mot)) {
        std::cout << "Les donnees rentrees ne sont pas correctes. Veuillez recommencer svp." << std::endl;
        std::cin.clear();
        std::cin.ignore(255, '\n');
    } 


    if (std::equal(std::begin(mot), std::end(mot), std::rbegin(mot), std::rend(mot))) {
        std::cout << "Le mot " << mot << " est bien un palindrome \n";
    }
    else {
        std::cout << "Le mot " << mot << " n'est pas un palindrome \n";
    }

    return 0;
};

La différence principale entre ton code et celui du TP "Gérer les erreurs d’entrée - Partie II" est que tu récupère une std::string alors que le TP récupères un int.

L’entrée utilisateur est toujours une suite de charactères, on peut donc toujours les mettre dans une std::string. Lorsque tu donnes 42 à ton programme, std::cin récupère deux char. Il est donc trivial de les mettre dans une std::string. Cependant, si tu veux les mettre dans un int, il faut convertir ces deux char en un nombre que l’on met ensuite dans ton int (std::cin s’en occupe pour toi).

Si tu veux vérifier que ce que l’utilisateur à tapé est bien un mot, tu peux vérifier toi-même que tous les charactères sont des charactères valide pour un mot (par exemple en vérifiant qu’il n’y a que des lettres). Cependant, ce n’est pas forcément quelque chose de simple à cause des accents que l’on a en français.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte