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 :

tester le type de variable


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut tester le type de variable
    Bonjour,
    Je veux faire un test sur le type de mon variable s(si l'utilisateur a ajouté un float ou une chaine de caractére) mais j'ai pas trouvé une solution.
    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
     
    #include <iostream>
    #include <stdlib.h>
    #include<string>
    #include<sstream>
     
    void main()
    {
     
    	float f;
    	std::cout<< "donner un réel";
    	std::cin>>f;
     
    	system("pause");
     
    }
    je veux savoir si l'utilisateur a saisi un float ou bien une chaine de caractére.
    Merci pour votre aide

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Tu peux interroger la méthode fail pour savoir si la conversion a réussi.

    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
    #include <iostream>
     
    int main()
    {
        float f;
     
        std::cout << "donner un reel" << std::endl;
        std::cin >> f;
        if (std::cin.fail()) {
            std::cout << "pas un nombre..." << std::endl;
        } else {
            std::cout << f << std::endl;
        }
     
        return 0;
     
    }
    http://www.cplusplus.com/reference/i...perator%3E%3E/

  3. #3
    Membre expérimenté Avatar de Firwen
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2009
    Messages : 472
    Points : 1 587
    Points
    1 587
    Par défaut
    Pour une gestion fine, il vaut mieux parfois repasser par des bons vieux fscanf ou fprintf quitte à sortir du modele de flux du C++ standard.

    http://www.cplusplus.com/reference/c...cstdio/fscanf/


    En espérant t'avoir aidé
    It's not a bug, it's a feature

  4. #4
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    ou ecrire un mini-validateur avec boost::karma

  5. #5
    Membre éprouvé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Points : 1 060
    Points
    1 060
    Par défaut
    Citation Envoyé par Firwen Voir le message
    Pour une gestion fine, il vaut mieux parfois repasser par des bons vieux fscanf ou fprintf quitte à sortir du modele de flux du C++ standard.
    C'est courant mais un peu "dangerous". Je préfère la méthode de la FAQ magique.

    Comment déterminer si une chaîne contient une valeur d'un certain type ?
    http://cpp.developpez.com/faq/cpp/?p...TRINGS_is_type
    Le
    ( iss >> tmp )
    est équivalent ( de mémoire ) à iss.fail(). L'istringstream est une istream particulière.

    Les opérations sur les flux de la STL ne sont pas très "user friendly" à la première approche, mais ça vaut le coup d'y entrer et de prendre quelques notes de dev

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par Firwen Voir le message
    Pour une gestion fine, il vaut mieux parfois repasser par des bons vieux fscanf ou fprintf quitte à sortir du modele de flux du C++ standard.


    Citation Envoyé par bretus Voir le message
    Je préfère la méthode de la FAQ magique.


    @Joel : un peu rude de commencer par un validateur pour lire un simple float...

  7. #7
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    @Joel : un peu rude de commencer par un validateur pour lire un simple float...
    Ca se resume juste à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    std::string p;
    float f;
     
    bool result = qi::parse(p.begin(), p.end(), qi::float_, f);

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Salut,
    merci beaucoup pour tous.
    la solution proposé par Joel F est exactement ce que je veux.

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

Discussions similaires

  1. [XL-2007] Tester le type de variable de colonnes
    Par Craquos dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/11/2014, 17h37
  2. Tester le type d'une variable
    Par jmbonnaz dans le forum MATLAB
    Réponses: 2
    Dernier message: 29/06/2007, 17h37
  3. tester le type d'une variable
    Par MayOL69bg dans le forum Langage
    Réponses: 5
    Dernier message: 16/04/2007, 14h31
  4. Tester le type d'une variable
    Par Débéa dans le forum Général Python
    Réponses: 2
    Dernier message: 03/08/2006, 16h45
  5. Tester le type d'une variable
    Par mzt.insat dans le forum Linux
    Réponses: 5
    Dernier message: 30/05/2006, 18h37

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