IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Comment vérifier les valeurs saisies avec cin?


Sujet :

C++

  1. #1
    Membre actif Avatar de Biosox
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 298
    Points : 203
    Points
    203
    Par défaut Comment vérifier les valeurs saisies avec cin?
    Bonjour,

    je désire vérifier les valeurs saisies avec cin pour m'assurer que ce sont des nombres entiers.
    Quelle chance! c'est exactement le sujet de la F.A.Q:
    Comment vérifier les valeurs saisies avec cin?
    Malheureusement j'ai un problème avec la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cin.ignore( numeric_limits<streamsize>::max(), '\n' ); // supprimer la ligne erronée dans le buffer
    j'ai un warning:
    not enough actual parameter for macro 'max'
    suivi d'erreurs:
    '(': illegal token on right side of '::'
    Quelqu'un peut-il m'aider? merci
    (P.S: j'utilise Microsoft Visual 2005)

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 572
    Points
    41 572
    Par défaut
    • Tu inclues un header Windows ? rajoute un #define NOMINMAX avant toute inclusion.
    • Sinon, fais juste un #undef max après toutes les inclusions de header.

    Explications:
    Il y a un truc dans les headers de Windows qui définit max comme une macro prenant deux paramètres.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre actif Avatar de Biosox
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 298
    Points : 203
    Points
    203
    Par défaut


    Entre-temps, j'ai opté pour une autre solution qui fonctionne aussi. J'ai remplacé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(! (cin >> nb))
    {
    cout << "input error" << endl;
    cin.clear();
    cin.ignore( bla bla bla);
    }
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    string s;
    getline(cin, s);
    istringstream iss(s.c_str());
    if(! (iss >> nb))
    {
    cout << "input error" << endl;
    }
    Et ça fonctionne correctement. Mais je suppose que j'y perds en process? (creation d'un objet istringstream...)
    Je vais essayer ta solution plutot.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/11/2008, 15h19
  2. Réponses: 3
    Dernier message: 07/10/2008, 11h13
  3. Réponses: 8
    Dernier message: 16/05/2007, 16h27
  4. [C#][WinForms][DataGrid]Vérifier les valeurs saisies
    Par loverdose dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/12/2005, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo