Reperer mot dans fichier

Signaler
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
-
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
-
Bonjour je souhaiterais savoir comment reperer un mot dans un fichier.txt sachant par exemple qu'il est entre 2 caracteres.

Exemple :

Mon fichier contient :  [ Nom] = toto

Je ne sais pas du tout comment récuperer Nom et toto. Sachant qu'en regardant les fonctions C++
On n'a que getline.

Merci pour votre aide.

6 réponses

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
14
Ben tu peux extraire tout ton fichier dans un string puis utiliser la méthode find.

Sinon, si tu souhaites l'extraire dans un char[], tu peux utiliser strstr.

Pour extraire ton fichier, tu as la classe ifstream.
Exemple d'utilisation ici:
http://www.cplusplus.com/reference/iostream/istream/read.html

C++ (@++)<!--
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009

Salut, d'abord Merci SAKingdom de m'avoir repondu.
Mais je souhaiterais savoir par rapport à ce que tu as écrit ,je souhaite recuperer plusieurs paramètres dans ce fichier(forcément à lire) et les mettre dans une classe,le problème est que je dois forcément faire une lecture ligne à ligne et trouver chacun de ses paramètres.Dois je vraiment extraire tout le fichier dans un string ?  Je t'avoue que je n'ai aucune idée de la manière dont il faut aborder le sujet (en meme temps je reconnais que je suis debutant mais bon faut quand meme essayer de chercher et je n'y arrive pas).

Merci d'avance a tous pour votre aide.
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
14
Si tu dois lire tous les paramètres présent dans le fichier, tu peux faire une lecture séquentielle à partir du buffer contenant la totalité du fichier (si pas trop gros). Pas besoin de rechercher quoi que ce soit.
Simplement à faire une comparaison du premier mot de la ligne encadré entre [] pour savoir de quel paramètre il s'agit, puis de stocker sa valeur. Ensuite, ligne suivante jusqu'à la fin.

Ma recommandation serait de procéder de la sorte. Lecture total du fichier dans un buffer (si pas trop gros), traitement du buffer. On stock toutes les valeurs des paramètres dans une structure puis, on utilise les membres de cette structure quand nécessaire.

C++ (@++)<!--
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009

D'accord SAKingdom, aurais-tu un exemple de lecture d'un fichier avec buffer s'il te plait?


Et encore merci pour ton aide c'est vraiment sympa.
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
14
Pour la lecture d'un fichier dans un buffer, t'as le lien que je t'ai donné.

Sinon pour traiter le buffer, ce sont des opérations de base sur les pointeurs.

On parcours la chaine avec un pointeur en testant si on tombe sur un [. Ensuite, on saute les caractères d'espacement (espace, tab etc.) puis on compare le mot.
On peut procéder de la façon suivante pour comparer:
On extrait le mot lettre par lettre dans un petit buffer secondaire (300 octets devrait être plus que suffisant) jusqu'à tomber sur un espace ou un ] ou autre.
Puis on effectue les strcmp nécessaire sur ce buffer temporaire.

Une fois le nom du paramètre validé, on saute tous les espaces et le = puis on extrait sa valeur. On peut procéder de la même façon qu'avec le nom de paramètre.

Maintenant, faut savoir ce que représente ces valeurs. Est-ce des nombres ?
[pouet] = 12345
des "chaine" ?
[pouet] = pouetpouet
Est-ce que ça dépend des paramètres ([pouet] prend des nombres, [pouetpouet] prend des chaines) ou alors est-ce complètement arbitraire ?

Soit dit en passent, un paramètre contenant une "chaine" peut aussi être comme suit:

[param] = 12345

Tout dépend de comment tu souhaites utiliser les valeurs.

Si tes paramètres on chacun un type fixe de donné, on peut effectuer la conversion (si nécessaire) à même le buffer d'extraction (donc avant de stocker la valeur finale dans la structure). Cependant, si tes paramètres peuvent prendre n'importe quoi, là, faudra stocker sans conversion. Ta structure devra donc pouvoir stocker des chaines de caractères.

C++ (@++)<!--
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009

SAKingdom, je voudrais récuperer toutes ces valeurs et les mettre dans une classe ou une structure.


Fichier :
[Nom ] = toto


[Age]  = 25


Je souhaiterais mettre toto et 25 dans une structure sachant que dans mon programme : j'ai repéré toto à partir de nom et 25 à partir de Age. Je n'arrive toujours pas à faire une lecture en fonction des caractères et donc à récuperer ces deux paramètreS.


Je suis désolé si je suis un boulet :(:(.

Merci d'avance pour ton aide