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 :

Conversion de String vers int


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut Conversion de String vers int
    Bonjour,

    J'ai besoin de convertir en int un nombre lu dans un fichier texte, et contenu dans une string, pour faire des opérations dessus.
    Je suis sous Visual studio 2005, et c'est un projet MFC

    J'ai utilisé la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int IDentier;
    IDentier=atoi(IDchaine.c_str());
    Problème : j'ai toujours 0 dans IDentier.

    Je pensais que c'était peut être un problème d'unicode, j'ai donc essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int IDentier;
    IDentier=_wtoi(IDchaine.c_str());
    Cette fois, une erreur se produit à la complation :
    1>error C2664: '_wtoi' : impossible de convertir le paramètre 1 de 'const char *' en 'const wchar_t *'
    Quelqu'un a une solution?

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 48
    Par défaut
    Salut

    teste ceci et dit moi si ça marche

    j'ai testé avec Code::Blocks est il n'y a pas de problème

    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
    #include <iostream>
    #include <sstream>
     
    using namespace std;
     
    int main()
    {
        int nombre;
        string st="123";
     
        istringstream iss( st );
        // convertir en un int
     
        iss >> nombre;
     
        cout << "Hello world!  :"<< nombre << endl;
     
        return 0;
    }

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 126
    Par défaut Une autre solution "string to int"


    Une autre solution "string to int" :

    int StringToInt(std::string in)
    {
    return atoi(in.c_str());
    }

    A+,
    Agamitsudo.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut
    Citation Envoyé par getdz Voir le message
    Salut

    teste ceci et dit moi si ça marche

    j'ai testé avec Code::Blocks est il n'y a pas de problème

    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
    #include <iostream>
    #include <sstream>
     
    using namespace std;
     
    int main()
    {
        int nombre;
        string st="123";
     
        istringstream iss( st );
        // convertir en un int
     
        iss >> nombre;
     
        cout << "Hello world!  :"<< nombre << endl;
     
        return 0;
    }
    Je viens de tester, et ça me met :
    1>error C2079: 'iss' utilise une class de 'std::basic_istringstream<_Elem,_Traits,_Alloc>' non défini

    1>error C2440: 'initialisation' : impossible de convertir de 'std::string' en 'int'
    (pour la ligne istringstream iss( st )

    J'ai aussi un warning, mais je pense qu'il est lié à cette erreur :

    1>warning C4552: '>>' : opérateur sans effet ; opérateur avec effet secondaire attendu

    int StringToInt(std::string in)
    {
    return atoi(in.c_str());
    }
    C'est pareil que ce que j'ai, non? (à part que tu le met dans une fonction, et que je le fais directement, ...)

    Je test quand même mais je suis pas convaincu.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut
    C'est pareil que ce que j'ai, non? (à part que tu le met dans une fonction, et que je le fais directement, ...)

    Je test quand même mais je suis pas convaincu.
    Je confirme, ça donne le même résultat : j'ai toujours 0 dans mon int.

    Si j'utilise _Wtoi, j'ai la même erreur que précédemment.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut
    En fait, je n'ai plus d'erreur de compilation maintenant. J'avais juste oublié de mettre #include <sstream>. Désolé.

    Par contre, au lieu d'avoir un 0 à chaque fois comme avec la méthode précedente, j'ai -858993460.
    Si je met en unsigned int, j'ai 3435973836.

    J'ai bien vérifié en mode débuggueur, la string contient bien mon chiffre, sans éspace ou autre caractère.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 48
    Par défaut
    Citation Envoyé par CyberSlan Voir le message
    En fait, je n'ai plus d'erreur de compilation maintenant. J'avais juste oublié de mettre #include <sstream>. Désolé.

    Par contre, au lieu d'avoir un 0 à chaque fois comme avec la méthode précedente, j'ai -858993460.
    Si je met en unsigned int, j'ai 3435973836.

    J'ai bien vérifié en mode débuggueur, la string contient bien mon chiffre, sans éspace ou autre caractère.
    Salut

    j'ai pas compris ce que tu veux dire.

    Est que avec ma méthode, ça a marché?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut
    Désolé, j'ai pas été très clair,

    C'est avec ta méthode que j'ai réussi à faire tourner le programme sans erreur de compilation (j'avais une erreur dans un premier temps car je n'avais pas mis : #include <sstream> )

    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
    #include <iostream>
    #include <sstream>
     
    using namespace std;
     
    int main()
    {
        int nombre;
        string st="123";
     
        istringstream iss( st );
        // convertir en un int
     
        iss >> nombre;
     
        cout << "Hello world!  :"<< nombre << endl;
     
        return 0;
    }
    Le problème c'est que quel que soit la valeur de st, j'obtiens -858993460 dans nombre, si nombre est de type int, et 3435973836 si nombre est de type unsigned int.

    En clair, j'ai créé la classe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int CClasses::StringToInt(std::string in)
    {
    	int out;
    	istringstream iss( in );
    	iss>>out;
    	return out;
    }
    et la valeur retournée est toujours -858993460

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

Discussions similaires

  1. Conversion de donnée string vers int
    Par reptooyep dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 05/06/2013, 22h40
  2. Conversion String ver int
    Par maparè dans le forum Langage
    Réponses: 3
    Dernier message: 23/01/2010, 00h23
  3. Conversion String vers Int ?
    Par manworms2 dans le forum C++Builder
    Réponses: 1
    Dernier message: 08/12/2008, 08h36
  4. conversion string vers int
    Par canary dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 11/05/2008, 18h35
  5. conversion string vers int
    Par mathher dans le forum C++
    Réponses: 4
    Dernier message: 14/04/2006, 17h52

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