RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 lecture fichier txt

Forum : C++
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ C++

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGE : [1]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM C++

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
SnakeEyes
Nouveau membre
Inscrit : 26/05/2009
Messages : 3
Message
#163295
Posté le 26/05/09 à 08:18
Bonjour et désolé de vous déranger.
J'ai un petit probleme pour lire un fichier txt.

Mon fichier texte se présente sous cette forme :
aa -3.667 -6.5 -4.746 -5.583 -4.31 -8.939 -7.313 -3.121 3
bb -6.31 -5.983 -5.702 -6.281 -6.387 -2.43 -5.804 -2.197 3
cc -7.592 -11.88 -7.021 -13.184 -7.415 -6.057 -7.073 -5.095 3
dd -7.254 -10.573 -6.832 -10.44 -7.846 -4.654 -6.925 -4.157 3
ee -7.07 -12.092 -6.542 -12.282 -6.977 -3.367 -6.783 -3.688 3
ff -8.212 -12.33 -7.42 -13.693 -6.996 -4.344 -6.435 -4.888 3
gg -6.763 -12.332 -6.435 -13.87 -7.258 -5.338 -6.859 -5.287 3
hh -7.973 -10.097 -7.548 -11.709 -7.757 -3.145 -7.588 -3.277 3
ii -7.108 -8.386 -6.33 -9.686 -6.509 -2.389 -6.202 -2.771 3

J'aimerais récupérer les valeurs d'une ligne pour les utiliser après.
Pour l'instant, je fais de cette manière mais c'est vraiment laborieux. Si vous avez une autre solution, je suis preneur.


if (is_readable("C:bddAcoustique.txt")){ ifstream fichier_lu("C:bddAcoustique.txt"); string nom_matiere = "cc"; //l'utilisateur peut demander autre chose que "cc" string line; string value; while(getline(fichier_lu,line)){ if(line.find(nom_matiere)==0){ value = line.substr(0,line.find("n")); ofstream file("C:fichier2.txt"); file << value; } } ifstream fichier2_lu("C:fichier2.txt"); string str; double Z[8]; if (!fichier2_lu.eof()) { for (int i=0; i < 10; ++i) { string tmp; fichier2_lu >> tmp; if (i != 0 && i!=9) { istringstream iss(tmp); iss >> Z[i-1]; } } }


En fait je lis la ligne qui corespond à "cc" (ou ca peut etre autre chose) et je l'ecris dans un fichier. Ensuite je lis ce nouveau fichier qui contient que la ligne qui m'interesse et je transforme les string en double. Pour chaque ligne, je n'ai besoin que des valeurs 1 à 8.

Merci de me donner un coup de pousse car je suis dans le flou le plus complet.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

rainbow
Superviseur :
- C & C++
Chef de projet(s) :
- IA savane
- Team MoteurProg

Avatar de rainbow
Inscrit : 26/05/2006
Messages : 1476
Message
#163303
Posté le 26/05/09 à 10:27
Je serai toi je ferai ceci:
* Je parcours ligne par ligne mon fichier
* Je fais un test str.find() avec "cc"
* si le test est concluant, je récupère la ligne dans un string
* je stoppe la lecture du fichier
* je créé un vecteur de int et un int servant de tampon
* je parcours mon string et
* à chaque nouvel espace j'ajoute à mon vecteur le nombre temporaire récupéré
* à chaque caractère chiffre ou '-' je l'ajoute dans mon nombre tampon

Voila, dans une boucle for pour l'analyse ça se fait très bien ;)

Ciao !
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

How to ask Questions ou Comment poser une question
TPE Rayons X et Scoliose

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

SnakeEyes
Nouveau membre
Inscrit : 26/05/2009
Messages : 3
Message
#163305
Posté le 26/05/09 à 10:58
Désolé mais je ne comprend pas comment tu veux faire.
Peut tu me donner un exemple stp???

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

rainbow
Superviseur :
- C & C++
Chef de projet(s) :
- IA savane
- Team MoteurProg

Avatar de rainbow
Inscrit : 26/05/2006
Messages : 1476
Message
#163321
Posté le 26/05/09 à 17:19
A partir de quel point ne comprends-tu plus ?

Pour le découpage de la ligne en nombre, voila en gros ce que je ferai:

std::vector<int> Get_Numbers_Of_Line(std::string line) { std::vector<int> return_value; int tampon = 0; int size = (int)line.size(); bool A_Number_Is_Started = false; //booléen pour savoir si on est dans un nombre ou si on est ailleurs dans la chaine for(int i=0; i<size; ++i) { if(line[i] == ' ') { if(A_Number_Is_Started) { return_value.push_back(tampon); A_Number_Is_Started = false; tampon = 0; } } * si c'est un chiffre A_Number_Is_Started = true; tampon = tampon*10 + Conversion_Char_To_Int(line[i]); * si c'est un '-' A_Number_Is_Started = true; tampon *= -1; } return_value; }

La variable A_Number_Is_Started est là pour ne pas chercher à mettre un valeur vide au début puisque tu auras un espace avant le premier nombre ("cc xxxx"). Essaye de suivre cet algo à la main tu vas le comprendre! Après n'essaye pas de le compiler je l'ai fait comme ça histoire de te montrer, à toi de le finir ;)

En espérant que tu y vois plus clair !

Ciao

P.S. C'est à toi de faire la fonction Conversion_Char_To_Int, elle n'existe pas c'était pour que ce soit plus clair^^

€dit: J'avais oublié que tes nombres étaient à virgules, tu as juste à changer les types des variables et rajouter un booléen pour savoir comment mettre à jour ton tampon. N'hésite pas à me demander si tu as des problèmes, je creuserai le problème plus en détail Smiley

Plus je me relis plus je me trouve chinois...
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

How to ask Questions ou Comment poser une question
TPE Rayons X et Scoliose

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

SnakeEyes
Nouveau membre
Inscrit : 26/05/2009
Messages : 3
Message
#163363
Posté le 27/05/09 à 08:42
C'est bon, j'ai trouvé mon bonheur. Je te remercie


string line; double Z[8]; while(getline(fichier_lu,line)){ istringstream ss(line); // on cree un stringstream pour recuperer les valeurs de la ligne string keyvalue; // la string qui va contenir la clef de la ligne ss >> keyvalue; // on recupere la clef de la ligne if(keyvalue==nom_matiere) {// on la compare a la clef a trouver for (int i=0; i<8; i++) ss >> Z[i]; //on recupere les 8 valeurs suivantes de la ligne break; //on sort du while } }




Encore merci beaucoup pour le temps passé

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

rainbow
Superviseur :
- C & C++
Chef de projet(s) :
- IA savane
- Team MoteurProg

Avatar de rainbow
Inscrit : 26/05/2006
Messages : 1476
Message
#163367
Posté le 27/05/09 à 12:24
Très bien, tu peux mettre le tag "résolu" en haut de cette page si tu veux !
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

How to ask Questions ou Comment poser une question
TPE Rayons X et Scoliose

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM C++



    PAGE : [1]



.: Site Web développé par Yann Pingot et l'équipe MPWG avec www.evolvia-web.com :.