Reperer mot dans fichier

CicinhoRaul Messages postés 221 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 16 janvier 2009 - 24 juin 2008 à 15:20
CicinhoRaul Messages postés 221 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 16 janvier 2009 - 26 juin 2008 à 17:40
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

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
24 juin 2008 à 16:19
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++ (@++)<!--
0
CicinhoRaul Messages postés 221 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 16 janvier 2009
24 juin 2008 à 17:00
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.
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
24 juin 2008 à 17:18
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++ (@++)<!--
0
CicinhoRaul Messages postés 221 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 16 janvier 2009
24 juin 2008 à 17:51
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
24 juin 2008 à 18:21
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++ (@++)<!--
0
CicinhoRaul Messages postés 221 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 16 janvier 2009
26 juin 2008 à 17:40
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
0
Rejoignez-nous