Lecture des variables dans une ligne d'un fichier texte. [Résolu]

Messages postés
192
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
28 février 2011
- - Dernière réponse : moumouteb
Messages postés
192
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
28 février 2011
- 8 janv. 2011 à 19:02
Bonjour.

Voici mon problème : j'ai un fichier texte à plusieurs lignes. Je souhaite les lire ligne par ligne j'utilise donc une boucle et la fonction getline pour récupérer chaque ligne.

Je me retrouve donc avec chaque ligne stockée dans une chaine de caractères.
Ma question est alors comment lire les variables de cette chaine de caractères?

Je pense qu'il faut la convertir en flux pour pouvoir réaliser quelque chose du genre :
ligne1>>entier1>>mot1;

Ou alors fais-je erreur dès le début en utilisant la fonction getline?

Merci d'avance de votre aide.


----------------------------------------------
Thiméo Soutien Scolaire : logiciel de soutien scolaire libre et gratuit
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
14539
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
24 juin 2019
88
3
Merci
Tu as mal lu : le problème de Mornaloce comprenait 2 mots par ligne
Mais bon, le principe reste le même...
En C++, tu as la fonction ifstream::getline() te permettant de lire une ligne dans un char*
Après, un coup de strtok pour séparer suivant les espaces...

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BunoCS
Messages postés
192
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
28 février 2011
2
3
Merci
Désolé pour le temps de réponse.

Et merci de ton aide qui m'a permis de réaliser ce que je voulais. Pour ce que ça interesserait :

//ouverture du fichier
ifstream SFichier("test.txt");

//recupération de la première ligne
char phrase[250];
SFichier.getline(phrase,250);
    char *buff;
    buff=strtok(phrase," ");
    while(buff!=NULL)
    {

        cout<<buff<<endl;
        buff=strtok(NULL," ");
    }



Cela permet de sortir tout les mots (suite de lettres terminée par un espace).Il suffit ensuite de les convertir dans le type de variable souhaité (atoi(), atof()...). De plus ici je ne lis que la première ligne, il faudrait ensuite boucler sur toutes les lignes

Encore merci.



----------------------------------------------
[www.thimeo.byethost15.com Thiméo Soutien Scolaire] : logiciel de soutien scolaire libre et gratuit

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de moumouteb
Messages postés
14539
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
24 juin 2019
88
0
Merci
Hello,
Regardes si ceci ne résout pas ton problème

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Commenter la réponse de BunoCS
Messages postés
192
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
28 février 2011
2
0
Merci
Merci pour ton aide,

Déjà désolé, j'ai posté dans la rubrique C mais je suis aussi intéressé par un code C++.

Le sujet que tu m'as montré ne traite que des chaines de caractères et il n'y a qu'un mot par ligne. J'avais réussi à traiter ce cas mais je n'arrive pas à récupérer tous les mots d'un fichier texte de ce type :

toto 12 15
pipo 12 14


ifstream fichier("test.txt", ios::in);
 
        if(fichier)
        {
                int entier1, entier2;
                string chaine1;
 
                fichier >> chaine1 >> entier1 >> entier2; 
 
                fichier.close();
        }


Voila pour lire une ligne mais comment passer à la suivante?

Merci de votre aide.
Commenter la réponse de moumouteb