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 :

Transformer string en entier


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 56
    Points : 27
    Points
    27
    Par défaut Transformer string en entier
    Bonjour,

    je souhaiterais transformer un string récupérer à partir d'un fichier texte en entiers.

    Par exemple le fichier texte peut-être :
    0 1 2
    3 12 34
    345 2344 1
    1 2 2323
    32 2323 23

    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
    23
     
    void mobile::chargerTxt()
    {
     
         ifstream fichier("config.txt", ios::in);  // on ouvre le fichier en lecture
     
            if(fichier)  // si l'ouverture a réussi
            {
                    string ligne;
     
                    while( getline(fichier, ligne) )
                    {
                        int temps,x,y;
                        istringstream istr(ligne);
                        ligne >> temps >> x >> y;
                    }
     
                    fichier.close();  // on ferme le fichier
            }
            else  // sinon
                    cerr << "Impossible de charger le fichier de config!" << endl;
     
    }
    Voici ce à quoi j'avais pensé mais cela ne fonctionne pas.

    Pourriez-vous m'aider ?


    Merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 56
    Points : 27
    Points
    27
    Par défaut
    J'ai 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
     
    if (fichier)
        {
            string ligne;
            int temps,x,y;
     
            while ( getline(fichier, ligne) )
            {
                stringstream ligneStream(ligne);
                string souschaine;
                int i = 0;
     
                while (getline(ligneStream, souschaine,' '))
                {
                    if (i==0)
                    {
                        istringstream istr(souschaine);
                        istr>>temps;
                    }
                    if (i==1)
                    {
                        istringstream istr(souschaine);
                        istr>>x;
                    }
                    if (i==2)
                    {
                        istringstream istr(souschaine);
                        istr>>y;
                    }
                    i++;
                }
                addEtape(x,y,temps);
            }
     
            fichier.close();
    Peut-être y en a t-il une meilleure ?

  3. #3
    Membre émérite

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Points : 2 252
    Points
    2 252
    Par défaut
    Bonjour,
    Dans le premier exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if(fichier)  // si l'ouverture a réussi
    {
       string ligne;
     
       while( getline(fichier, ligne) )
       {
          int temps,x,y;
          istringstream istr(ligne);
          ligne >> temps >> x >> y;
          faireQuelqueChose(temps, x, y);
      }
    fichier.close();  // on ferme le fichier
    il faut mettre istr >> temps >> x >> y;

    Attention aussi au niveau des include. Il faut :

    #include <string> pour les string
    #include <fstream> pour ifstream (input file stream)
    #include <sstream> pour istringstream (input string stream)
    #include <iostream> pour cerr

  4. #4
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Je rajouterais que la fermeture du fichier via close() est inutile ici. fstream implémentant le RAII.
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  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
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour
    Un rapide tour dans la FAQ t'aurais permis de répondre à ta question.

  6. #6
    Membre actif
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    189
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 189
    Points : 213
    Points
    213
    Par défaut
    A noter aussi qu'un test sur istr >> temps >> x >> y; serait bien vu pour être certain que les valeurs temps, x et y soient correctes. ( FAQ surement )

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

Discussions similaires

  1. [Debutant]Transformer string en int
    Par htaou dans le forum SL & STL
    Réponses: 7
    Dernier message: 09/09/2005, 21h28
  2. [Débutant(e)]convertir un string en entier
    Par harris_macken dans le forum Langage
    Réponses: 2
    Dernier message: 01/04/2005, 07h20
  3. [debutant]transform chaine en entier
    Par loutente dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/03/2005, 10h53
  4. Ajouter a une variable de type string, un entier
    Par Little-Freud dans le forum SL & STL
    Réponses: 12
    Dernier message: 05/03/2005, 19h33
  5. transformer string en numerique
    Par chrys76 dans le forum ASP
    Réponses: 14
    Dernier message: 05/12/2003, 13h27

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