Forum Clubic

Récupérer données dans fichier texte

Bonjour,

Je souhaiterai pouvoir récupérer dans un fichier texte des coordonnée écrite dans ce style:

camera 0,0,0,10
light 1,1,1,2.0,2.3,1

la récupération a pour but apres de pouvoir utiliser les donnée récupéré pour créer des variable du style

vecteur(a,b,c)
focale(d)

(avec a = 0, b=0,c=0,d=10) donc comme vous l’avez compris, il faut une lecture intelligente avec la reconnaissance des virgule comme une nouvelle donnée.
etc…

Je pensais d’abord écrire en xml et récupérer en xml, mais ca ferai trop de tag, et donc le fichier xml serait “chiant” a modifier.

Si quelqu’un a une piste, je ne suis pas contre :).

Merci d’avance!

Salut,

Tu pourrais utiliser le format INI !

[SECTION]
CLE=Valeur

Dans la plupart des langages et outils RAD tu as des routines pour travailler rapidement avec des fichiers INI.
Sinon il faut te faire une petite routine qui va lire chaque ligne de ton fichier, et suivant le premier mot, l’interpretation des valeurs qui suivent variera.

bon Courage

Qu’est ce qu’on appelle un “outil RAD” ?

Et la récupération des données se ferait en quoi ?

Hm , je sais pas pourquoi , mais j’ai mis [C++] dans le titre du sujet, ça a pas l’air d’être passé, donc je pense pas que ta réponse cristolab me convienne (mais merci quand même)

Je suis donc toujours sur le même problème, avec un autre que j’ai oublié de préciser, je ne sais pas combien d’information il va y avoir dans ce dossier et lesquels

camera 0 0 0
object1 1 1 1
object2 2 2 2
etc . . .

et il faut que je sois capable de distinguer qui est quoi pour pouvoir créer des variable du bon type ensuite dans mon programme.

Alors en C++, …

Je peux juste t’aider sur le format du fichier. Pour faire simple, tu peux utiliser un séparateur que tu n’utiliseras jamais pour tes données. En l’occurence et par exemples, TSV ou CSV francais (wikipedia pour la définition). Donc t’as l’air plutot bien parti.

Pour l’algo, tu vois comment faire ? L’“intelligence de la lecture” de fichier que tu souhaites avoir se limite quand meme à une logique relativement simple :

  • tant que mon fichier a des lignes de texte, je les lis
  • pour chaque ligne, je considère une valeur du texte allant jusqu’à la fin de ligne ou un séparateur (tabulation pour tsv, virgule pour csv, point virgule pour csv fr)
  • si cette valeur est la première lue, alors elle identifie mon objet
  • sinon, elle identifie une coordonnée

C’est à peu pres tout non ?

Ouai j’ai trouvé un pti bout de code sur le siteduzero pour faire ça , que j’ai adapter.
Donc pour récupérer toutes mes valeur séparée comme jeu veux , je créée un vector contenu

puis en ayant charger le texte dans “fichier” , je fais ça :

while(!fichier.eof()){
fichier >> text; /*on lit jusqu’à l’espace et on stocke ce qui est lu dans la variable indiquée */
contenu.push_back(text);
i++;
}

le problème c’est que si je veux utiliser les valeur en tant que float , je ne peux pas car le vector est en string, et j’ai tenter de convertir avec (float) ou avec atof ( qui est nul là puisqu’en fait c’est pour les char) , donc si quelqu’un a une idée pour que je puisse utilliser mon tableau de vector en tant que float quand j’en ai besoin. . je suis preneur. .