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 :

Bloquer saisie cin>> à 1 caractère: possible?


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Points : 11
    Points
    11
    Par défaut Bloquer saisie cin>> à 1 caractère: possible?
    Bonjour

    Est il possible de bloquer la saisie d'un cin>> à 1 caractère?

    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    void main()
    {
     
    char marquevoiture='0';
     
    cout<<"Selectionnez votre marque de voiture"<<endl;
    cout<<" 1 - Renault"<<endl;
    cout<<" 2 - Peugeot"<<endl;
    cin>>marquevoiture;
     
    if (marquevoiture=='1' || marquevoiture=='2')
    {
            //Traitement
    }
    else
    {
    cout<<"Veuillez reselectionner"<<endl;
    system("pause");
    main();
    }
    }
    Il n'y a pas de soucis entre les caractère ou les nombre mais si il met plusieurs caractère (par exemple Renault), il va me mettre veuillez reselectionner 7 fois (le nombre de lettre de Renault)



    Est il possible de bloquer la saisie d'un cin>> à 1 caractère?



    Merci

  2. #2
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    peut-être serait-il plus pertinent d'utiliser la méthode getline avec un string:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #include string;
    void main()
    {
     
    std::string marquevoiture("0");
     
    cout<<"Selectionnez votre marque de voiture"<<endl;
    cout<<" 1 - Renault"<<endl;
    cout<<" 2 - Peugeot"<<endl;
    getline(cin,marquevoiture);
     
    if (marquevoiture[0]=='1' || marquevoiture[0]=='2')
    {
            //Traitement
    }
    else
    {
    cout<<"Veuillez reselectionner"<<endl;
    system("pause");
    main();
    }
    }
    De plus, tu peux avec ça même traiter le cas ou il entre renaud ou n'importe quelle phrase.

    sinon, si tu ne veut pas utiliser string, utilise un int. ou bien la méthode getchar() (en faisant un #include <stdio.h>) mais c'est un peu désuet.


    Bonne chance
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

Discussions similaires

  1. Bloquer saisie textbox
    Par jedi186 dans le forum VB.NET
    Réponses: 11
    Dernier message: 10/06/2007, 11h37
  2. Réponses: 3
    Dernier message: 09/03/2007, 11h23
  3. bloquer saisie d une textarea
    Par jeanPaul dans le forum Général JavaScript
    Réponses: 30
    Dernier message: 07/03/2006, 10h34
  4. protection sur le "cin" et affichage de caractère
    Par mitrandir dans le forum SL & STL
    Réponses: 1
    Dernier message: 20/02/2006, 01h53
  5. [NASM] Saisie d'une chaîne de caractères
    Par Skyounet dans le forum Assembleur
    Réponses: 9
    Dernier message: 29/08/2005, 12h31

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