Lecture des variables dans une ligne d'un fichier texte.

Résolu
moumouteb Messages postés 192 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 28 février 2011 - 27 déc. 2010 à 12:08
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

4 réponses

BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
28 déc. 2010 à 11:37
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
3
moumouteb Messages postés 192 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 28 février 2011 10
8 janv. 2011 à 19:02
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
3
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
28 déc. 2010 à 09:37
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
0
moumouteb Messages postés 192 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 28 février 2011 10
28 déc. 2010 à 10:11
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.
0
Rejoignez-nous