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 :

recuperer 3 float dans une ligne d'un fichier texte


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 4
    Points
    4
    Par défaut recuperer 3 float dans une ligne d'un fichier texte
    Bonjour,
    Dans un projet OpenGL en c++ (MFC) je dois enregistrer et charger une trajectoire depuis un fichier texte l'enregistrement est facile mais j'aimerais savoir comment faire pour recuperer mes 3 floats contenu dans une ligne de mon fichier texte.
    merci.

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 534
    Points : 403
    Points
    403
    Par défaut
    Bonsoir ,

    Pour obiwankennedy :

    Comment avez-vous enregistré vos "3 float" dans un fichier texte ?
    Ensuite on pourra répondre .

    Cordialement.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Points : 1 156
    Points
    1 156
    Par défaut
    L’idée générale est la suivante :

    - récupérer une ligne du fichier avec « getline (fichier, ligne) »
    Où fichier est un ifstream et ligne une string.

    - ensuite construire un istringstream, puis avec getline ( istringstream, string_a_decouper, separateur)
    Le séparateur est un caractère

    - pour obtenir un float ou autre, une fonction template de redirection d’un istringstream vers un float devrais suffire.

    En cas de souci avec ces fonctions la FAQ C++ devrais suffire.
    Après a toi de faire un algo afin d’optimiser la succession des étapes, mais l’idée est la.

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 534
    Points : 403
    Points
    403
    Par défaut
    Bonsoir,

    Un exemple pour aider :
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    #include <iostream>
    #include <iomanip>
    #include <sstream>
    #include <fstream>
    #include <string>
     
    using namespace std ;
     
    const size_t NL = 10 ;
    const string FI = "xoxo.txt" ;
    const int P = 2 ;
     
    typedef struct ff1
    { float f1, f2, f3 ;
    } ff1 ;
     
    void doFill( size_t nl )
    { ff1 s ; 
      float f1 = 10.50;
      float f2 = 20.50;
      float f3 = 30.50;
      fstream F ( FI.c_str() , ios::out | ios::binary ) ;
      if( ! F ) exit(0) ;
      for( size_t i = 0 ; i < nl ; i++ )
      { s.f1 = f1;
        s.f2 = f2;
        s.f3 = f3;
        F << s.f1 << ' ' << s.f2 << ' ' << s.f3 << endl ;
        f1 += 1.0 ;
        f2 += 1.0 ;
        f3 += 1.0 ;
      }
      F.close() ; 
    }
     
    void doRead( size_t nl, int p )
    { ff1 s ;
      string z ;
      char c ;
      fstream F ( FI.c_str() , ios::in | ios::binary ) ;
      if( ! F ) exit(0) ;
      while( getline( F, z ) )
      { istringstream  is(z) ;
        is >> s.f1 >> c >> s.f2 >> c >> s.f3 ;  
        cout << fixed << setfill('0') << setprecision(p)
             << s.f1 << ' ' << s.f2 << ' ' << s.f3 << endl;   
      }
      F.close() ; 
    }
     
    void do1()
    { doFill( NL ) ;
      doRead( NL, P ) ;
    }
     
    int main()
    { do1() ;
      return 0 ;
    }
    J' ai mis les 3 float dans une structure, au cas vous entendez les ranger dans std::vector.

    Cordialement.

Discussions similaires

  1. Nombre d'occurences dans une ligne d'un fichier
    Par delilou dans le forum Général Java
    Réponses: 2
    Dernier message: 24/03/2011, 17h26
  2. Réponses: 2
    Dernier message: 21/09/2007, 15h37
  3. Insérer une ligne d'un fichier texte dans une table
    Par Atemi76 dans le forum Administration
    Réponses: 1
    Dernier message: 10/07/2007, 17h32
  4. Insérer la date dans une ligne d'un fichier
    Par odrimont dans le forum Linux
    Réponses: 1
    Dernier message: 09/07/2006, 13h32
  5. Réponses: 4
    Dernier message: 24/09/2005, 09h52

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