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 :

Convertion String to Long


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 35
    Par défaut Convertion String to Long
    Bonjour,

    Quelqu' un peut-il me pretter son oeil sur ce problème ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        std::istringstream iss( "2147483650" );
        long nombre;
        iss >> nombre;
    Resultat : nombre =0xcccccccc

    Merci.

    Pourtant ca doit marcher ?
    http://cpp.developpez.com/faq/cpp/in...RINGS_strtonum

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Tu depasse la capacite dun long. Passe ton long en unsigned long.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 60
    Par défaut
    Bonjour,

    Essaie avec un 'unsigned long' plutôt...

    [EDIT] Bon, on m'est passé devant... [/EDIT]

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 35
    Par défaut
    Voici un extrait de code exact. Je récupère une info qui me donne le type d'un variant et je converti la valeur associée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      if(l_str_variantType == std::string("VT_I4"))
      {
        p_o_variant.vt = VT_I4;
        l_str_temp = l_sstr_temp.str();
        l_sstr_temp >> p_o_variant.lVal;        
     
        sscanf(l_str_temp.c_str(), "%ld", &p_o_variant.lVal);
      }
    l_sstr_temp >> p_o_variant.lVal;
    donnec un résultat en 0xcccccccc

    Par contre le scanf me donne bien la valeur : 2147483650 soit 0x80000002

    Je pense que cela vient bien d'un soucis de débordement me je ne vois pas !!!

  5. #5
    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
    Par défaut
    Salut,
    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
    #include <iostream>
    #include <sstream>
     
    int main()
    {
        std::istringstream iss( "2147483650" );
        long nombre;
        if(iss >> nombre)
        {
            std::cout<<nombre<<"\n";
        }
        else
        {
            std::cout<<"erreur de conversion\n";
        }
     
        return 0;
    }

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 35
    Par défaut
    Ok , mais pourquoi cette erreur de conversion, avec le istringstream et pas avec le sscanf ???

  7. #7
    Membre expérimenté Avatar de Rupella
    Inscrit en
    Février 2005
    Messages
    286
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 286
    Par défaut
    Ta conversion échoue sûrement. il te faut tester le résultat de la conversion
    regarde http://cpp.developpez.com/faq/cpp/index.php?page=strings#STRINGS_convert_to

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

Discussions similaires

  1. Conversion d'un String en long
    Par arsenik7 dans le forum Langage
    Réponses: 6
    Dernier message: 13/04/2006, 11h51
  2. Réponses: 2
    Dernier message: 06/12/2005, 12h01
  3. Convertion string => entier
    Par en_gel_ho dans le forum Requêtes
    Réponses: 4
    Dernier message: 01/06/2005, 12h59
  4. convertion string --> long
    Par JulienT dans le forum Langage
    Réponses: 3
    Dernier message: 23/03/2005, 23h05
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

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