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

Signaler
Messages postés
192
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
28 février 2011
-
Messages postés
192
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
28 février 2011
-
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

4 réponses

Messages postés
14733
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
1 juillet 2020
92
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
Messages postés
192
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
28 février 2011
6
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
Messages postés
14733
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
1 juillet 2020
92
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
Messages postés
192
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
28 février 2011
6
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.