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 :

String lire dans un fichier texte, recuperer des choses


Sujet :

C++

  1. #1
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut String lire dans un fichier texte, recuperer des choses
    Bonsoir,

    .J'aimairais apprendre de comment lire un fichier de modele 3d avec string, ca peut etre utile, mais je ne trouve pas vraiment vraiment de truc concret..
    Avez vous un petit éxample ou lien vers tutorial? Je serais reconnaissant

    Par éxample, comment je dois m'ii prendre, pour lire ceci depuis un fichier texte et mettre les chiffres dans des float.

    a 0.12 0.10 -0.50
    a 0.18 0.12 -0.30
    a 0.45 0.45 -0.80
    a 0.12 0.10 -0.50
    b 0.18 0.12 -0.30
    b 0.45 0.45 -0.80

    Voila merci d'avance

  2. #2
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    Par défaut
    Bon y a surement des erreurs mais ca ressemble a ca normalement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ifstream fichier("monfichier");
    string nom;
    double x;
    double y;
    double z;
     
    while (!fichier.eof())
    {
      fichier >> nom;
      fichier >> x;
      fichier >> y;
      fichier >> z;
    }

  3. #3
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 282
    Points : 11 036
    Points
    11 036
    Par défaut
    NOOooon. Jamais de lecture sur eof!
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while (file >> tag >> x >> y >> z) 
        dosomethingwith(tag,x,y,z);

  4. #4
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Merci beaucoup!! Je vais bien pouvoir m'amuser avec ca!

  5. #5
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    Par défaut
    Citation Envoyé par Luc Hermitte
    NOOooon. Jamais de lecture sur eof!
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while (file >> tag >> x >> y >> z) 
        dosomethingwith(tag,x,y,z);
    Pourquoi ? J'ai toujours fait comme ca (et aparemment c'est une connerie).

  6. #6
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 282
    Points : 11 036
    Points
    11 036
    Par défaut
    Parce qu'eof() n'est vrai qu'après qu'on ait atteint la fin du fichier.
    Avec ces boucles sur eof, le scénario est:

    1b- lecture de la dernière ligne
    2a- eof est faux
    2b- tentative de lecture de ce qui suit
    2c- manipulation de données invalides
    3a- eof est vrai => arrêt.

    Et quand il y a plusieurs choses à lire, on ne peut pas détecter le format incorrect d'une ligne incomplète.

    Bref. C'est dans la FAQ pourtant

  7. #7
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    Par défaut
    Ok merci pour l'explication.

    C'est un sujet que je pensait maitriser donc forcément je n'ai pas été le lire dans la FAQ

  8. #8
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Bonjour,

    Je n'arrive pas à lire le fichier correctement

    Voici le code que j'utilise

    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
    void load( string filename )
        {
            numTris = 0;
            ifstream file( LDEstc(filename) );
            string line;
            int i = 0;
            if ( !file ) cout<<"\nImpossible d'ouvrir le fichier \n"<<filename<<"\n"; else
     
            while ( getline(file,line) )
            {
                istringstream iss( line );
                string info;
     
                while ( iss >> info )
                {
                    if ( info == "Triangles" ) iss>>numTris;
                    if ( info == "t" )
                    iss>> vertices[i].x>>vertices[i].y>>vertices[i].z>>
                    vertices[i+1].x>>vertices[i+1].y>>vertices[i+1].z>>
                    vertices[i+2].x>>vertices[i+2].y>>vertices[i+2].z;
     
     
                    cout<<"\n"<<vertices[i].x<<" "<<vertices[i].y<<" "<<vertices[i].z<<" "
                        <<vertices[i+1].x<<" "<<vertices[i+1].y<<" "<<vertices[i+1].z<<" "
                        <<vertices[i+2].x<<" "<<vertices[i+2].y<<" "<<vertices[i+2].z<<"\n";
     
                    i++;
                }
            }
        }
    Et voici le fichier que j'essaye de charger, il contient un objet de 53 triangles,
    chaque ligne contient les coord d'un triangle
    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
     
    Triangles 53
    t 5.5064 0.1048 5.5234 6.0652 0.1048 2.9735 5.5064 0.1048 2.9735
    t 5.5064 0.1048 2.9735 6.0652 3.5297 2.9735 5.5064 3.5297 2.9735
    t 5.5064 0.1048 2.9735 6.0652 3.5297 2.9735 5.5064 3.5297 2.9735
    t 5.5064 3.5297 2.9735 6.0652 3.5297 5.5234 5.5064 3.5297 5.5234
    t 5.5064 3.5297 2.9735 6.0652 3.5297 5.5234 5.5064 3.5297 5.5234
    t 5.5064 3.5297 5.5234 -7.3937 0.1048 0.8856 -6.8349 0.1048 0.8856
    t 5.5064 3.5297 5.5234 -7.3937 0.1048 0.8856 -6.8349 0.1048 0.8856
    t 5.5064 0.1048 5.5234 6.0652 0.1048 2.9735 5.5064 0.1048 2.9735
    t -6.8349 0.1048 0.8856 -7.3937 0.1048 3.4356 -6.8349 0.1048 3.4356
    t -6.8349 0.1048 3.4356 -7.3937 3.5297 0.8856 -6.8349 3.5297 0.8856
    t -6.8349 3.5297 0.8856 -7.3937 3.5297 3.4356 -6.8349 3.5297 3.4356
    t -6.8349 0.1048 0.8856 -7.3937 0.1048 3.4356 -6.8349 0.1048 3.4356
    t -6.8349 3.5297 3.4356 6.0652 -0.0173 -7.068 6.0652 -0.0173 7.068
    t -6.8349 3.5297 0.8856 -7.3937 3.5297 3.4356 -6.8349 3.5297 3.4356
    t -6.8349 0.1048 3.4356 -7.3937 3.5297 0.8856 -6.8349 3.5297 0.8856
    t -6.8349 3.5297 3.4356 6.0652 -0.0173 -7.068 6.0652 -0.0173 7.068
    t 6.0652 -0.0173 7.068 6.0652 8.425 7.068 6.0652 8.425 -7.068
    t 6.0652 -0.0173 7.068 6.0652 8.425 7.068 6.0652 8.425 -7.068
    t 6.0652 8.425 7.068 6.0652 8.425 -7.068 18.4065 -0.0173 7.068
    t 6.0652 8.425 7.068 6.0652 8.425 -7.068 18.4065 -0.0173 7.068
    t 6.0652 8.425 -7.068 18.4065 -0.0173 7.068 18.4065 -0.0173 -7.068
    t 6.0652 8.425 -7.068 18.4065 -0.0173 7.068 18.4065 -0.0173 -7.068
    t 6.0652 -0.0173 -7.068 6.0652 -0.0173 7.068 6.0652 8.425 7.068
    t 6.0652 0.1048 2.9735 5.5064 0.1048 2.9735 6.0652 3.5297 2.9735
    t 18.4065 -0.0173 -7.068 18.4065 8.425 7.068 18.4065 8.425 -7.068
    t 18.4065 8.425 -7.068 -6.8349 -0.0173 -7.068 -6.8349 -0.0173 7.068
    t 18.4065 -0.0173 -7.068 18.4065 8.425 7.068 18.4065 8.425 -7.068
    t 18.4065 -0.0173 7.068 18.4065 -0.0173 -7.068 18.4065 8.425 7.068
    t 18.4065 8.425 -7.068 -6.8349 -0.0173 -7.068 -6.8349 -0.0173 7.068
    t 18.4065 -0.0173 -7.068 18.4065 8.425 7.068 18.4065 8.425 -7.068
    t 18.4065 -0.0173 7.068 18.4065 -0.0173 -7.068 18.4065 8.425 7.068
    t 18.4065 8.425 7.068 18.4065 8.425 -7.068 -6.8349 -0.0173 -7.068
    t -6.8349 -0.0173 7.068 -6.8349 8.425 7.068 -6.8349 8.425 -7.068
    t -6.8349 -0.0173 7.068 -6.8349 8.425 7.068 -6.8349 8.425 -7.068
    t -6.8349 8.425 7.068 -6.8349 8.425 -7.068 5.5064 -0.0173 7.068
    t -6.8349 8.425 7.068 -6.8349 8.425 -7.068 5.5064 -0.0173 7.068
    t -6.8349 8.425 -7.068 5.5064 -0.0173 7.068 5.5064 -0.0173 -7.068
    t -6.8349 8.425 -7.068 5.5064 -0.0173 7.068 5.5064 -0.0173 -7.068
    t -6.8349 -0.0173 -7.068 -6.8349 -0.0173 7.068 -6.8349 8.425 7.068
    t -6.8349 0.1048 0.8856 -7.3937 0.1048 3.4356 -6.8349 0.1048 3.4356
    t 5.5064 -0.0173 -7.068 5.5064 8.425 7.068 5.5064 8.425 -7.068
    t 5.5064 -0.0173 -7.068 5.5064 8.425 7.068 5.5064 8.425 -7.068
    t 5.5064 0.1048 5.5234 6.0652 0.1048 2.9735 5.5064 0.1048 2.9735
    t 5.5064 3.5297 5.5234 -7.3937 0.1048 0.8856 -6.8349 0.1048 0.8856
    t 5.5064 3.5297 5.5234 -7.3937 0.1048 0.8856 -6.8349 0.1048 0.8856
    t 5.5064 3.5297 2.9735 6.0652 3.5297 5.5234 5.5064 3.5297 5.5234
    t 5.5064 3.5297 2.9735 6.0652 3.5297 5.5234 5.5064 3.5297 5.5234
    t 5.5064 0.1048 2.9735 6.0652 3.5297 2.9735 5.5064 3.5297 2.9735
    t 5.5064 -0.0173 -7.068 5.5064 8.425 7.068 5.5064 8.425 -7.068
    t 5.5064 -0.0173 7.068 5.5064 -0.0173 -7.068 5.5064 8.425 7.068
    t 5.5064 8.425 -7.068 -19.735 -0.0173 -7.068 -19.735 -0.0173 7.068
    t 5.5064 -0.0173 -7.068 5.5064 8.425 7.068 5.5064 8.425 -7.068
    t 5.5064 -0.0173 7.068 5.5064 -0.0173 -7.068 5.5064 8.425 7.068
    Ca compile sans probleme mais ca plante à l'éxécution. Help Merci

    edit: le code du chargement, est dans une structure, les variables i sont bien déclarées

  9. #9
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 282
    Points : 11 036
    Points
    11 036
    Par défaut
    push_back ?

  10. #10
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Pardon?

    edit: oups, je vais voir du coté push_back merci

  11. #11
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Bonsoir,

    Alors pour ceux qui voulaient quand meme savoir d'ou vient l'erreur, ca vien tout simplement du fait que j'ai déclaré le tableau vertices comme ca:

    vertex *vertices;

    eu lieu de

    vertex vertices[5000]; (ou équivalent)

  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Tu veux dire que tu utilisais un pointeur non-alloué et même pire, non-initialisé ?
    Joli...

  13. #13
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    C'est mon point faible dans la programmation
    Je ne prends pas des précautions, je me concentre plus sur le systeme

  14. #14
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 282
    Points : 11 036
    Points
    11 036
    Par défaut
    Les vecteurs sont tes amis.

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

Discussions similaires

  1. Choisir la ligne a lire dans un fichier texte
    Par Lucas42 dans le forum C
    Réponses: 2
    Dernier message: 06/11/2007, 01h50
  2. lire dans un fichier text
    Par khayate dans le forum VB.NET
    Réponses: 6
    Dernier message: 18/06/2007, 18h22
  3. Réponses: 11
    Dernier message: 25/01/2007, 18h20
  4. [VB.NET]comment écrire/lire dans un fichier text
    Par zouhib dans le forum Windows Forms
    Réponses: 1
    Dernier message: 19/05/2006, 17h11
  5. Ecrire et lire dans un fichier texte
    Par podz dans le forum C
    Réponses: 3
    Dernier message: 25/10/2005, 16h57

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