Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1343 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  lecture de fichier un peu complexe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

lecture de fichier un peu complexe

n°679245
Library
Posté le 21-03-2004 à 14:26:18  profilanswer
 

salut
 
je vous présente brievement mon probleme :
j'ai un fichier du type
float  float  ...  float  float
float  float  ...  float  float
...
 
...
float  float  ...  float  float
 
(en clair, un certain nombre - que je ne connais pas - de float par ligne, et un certain nombre de lignes inconnu lui aussi)
et j'aimerais mettre ca dans un tableau à deux dimensions de float.
Mettre les données dans le tableau, je sais faire, mais ce que je ne sais pas faire, c'est lire le fichier correctement.
Pour l'instant, mon code est :
 

Code :
  1. std::ifstream fichier ("donnees.txt" );
  2.   std::string ligne;
  3.   float x;
  4.   while (!fichier.eof())
  5.     {
  6.       fichier.getline (ligne, sizeof(ligne-1));
  7.       std::istringstream flig (ligne);
  8.       while (flig >> x)
  9.         std::cout << x;
  10.     }


 
mais ca ne marche pas :

Citation :

g++ -c fonctions.cc -o fonctions.o
fonctions.cc: In function `configuration init_conf()':
fonctions.cc:82: no match for `std::string& - int' operator
fonctions.cc:83: variable `std::istringstream flig' has initializer but incomplete type
make: *** [fonctions.o] Erreur 1


 
vous pourriez me dire ce qui ne va pas dans mon code et comment le modifier ?
merci :)

mood
Publicité
Posté le 21-03-2004 à 14:26:18  profilanswer
 

n°679247
Taz
bisounours-codeur
Posté le 21-03-2004 à 14:31:06  profilanswer
 

mauvais, très mauvais, surtout le "sizeof(ligne-1)" quite pose problème
 
 

Code :
  1. while(std::getline(std::cin, ligne))
  2. {
  3.    std::istringstream flig(ligne);
  4.     while (flig >> x)
  5.             std::cout << x;
  6. }


 
tu ferais bien aussi de vérifier que le nombre d'enregistremaent par ligne est correcte. regarde aussi du coté de std::copy. comme  ça tu copie du istringstream dans un conteneur, et si la taille du conteneur n'est pas celle attendue apprès copie, y a eu un problème

n°679250
Library
Posté le 21-03-2004 à 14:42:19  profilanswer
 

merci de ta réponse rapide :)
 
j'ai mis ton code à la place du mien et ca enlève effectivement une erreur, mais il en reste une :

Citation :


g++ -c fonctions.cc -o fonctions.o
fonctions.cc: In function `configuration init_conf()':
fonctions.cc:82: variable `std::istringstream flig' has initializer but incomplete type
make: *** [fonctions.o] Erreur 1


 
d'autre part, je suis débutant en C++ donc je ne comprend pas ce que tu dis à la fin de ton message. J'ai fait pas mal de recherches sur internet mais je n'ai rien trouvé de très clair sur tout ce qui est istringstream.

n°679251
Taz
bisounours-codeur
Posté le 21-03-2004 à 14:43:12  profilanswer
 

#include <sstream> ?

n°679252
Taz
bisounours-codeur
Posté le 21-03-2004 à 14:44:00  profilanswer
 

ok, alors laisse tomber, des que t'as régler ton problème, continue comme ça. sinon tu sais que tu n'est pas obligé de passer par un istringstream intermédiaire

n°679256
Library
Posté le 21-03-2004 à 14:49:22  profilanswer
 

Taz a écrit :

#include <sstream> ?


 
effectivement, ca aide
 
mais par contre ca ne marche toujours pas :

Code :
  1. std::cout << "ok" << std::endl;
  2.   while(std::getline(std::cin, ligne))
  3.     {
  4.       std::cout << "ok" << std::endl;
  5.       std::istringstream flig(ligne);
  6.       while (flig >> x)
  7.         std::cout << x;
  8.     }


 
le premier ok s'affiche mais le deuxieme ne s'affiche jamais et le programme continue à tourner sans jamais s'arreter. Tu vois ce qui pourrait bloquer ?

n°679257
Taz
bisounours-codeur
Posté le 21-03-2004 à 14:50:37  profilanswer
 

std::getline(std::cin,
 
 
j'ai pas fait gaffe que tu lisais depuis un fichier, j'ai mis cin à la place. remplace std::cin par ton std::ifstream

n°679264
Library
Posté le 21-03-2004 à 15:11:46  profilanswer
 

effectivement ca marche :)
merci beaucoup pour ton aide !!

n°679293
fabien
Vive la super 5 !
Posté le 21-03-2004 à 16:03:17  profilanswer
 

salut moi aussi je suis débutant, vous n'auriez pas un cours sur comment lire et ecrire dans un fichier? je sais le faire en c, mais pas en c++.  
 
merci


---------------
Découvre le HFRcoin ✈ - smilies
n°679297
Taz
bisounours-codeur
Posté le 21-03-2004 à 16:10:45  profilanswer
 

fais une recherche (dans le bibliolinks)
 
prends tout ce qui se termine par stream.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  lecture de fichier un peu complexe

 

Sujets relatifs
Minimiser fenetre DOS au lancement d'un fichier BATCH (.bat)clé unique pour identifier un fichier
nom de fichier sans extensionFichier help du language html en français ?
Un bout de code relatif à plusieurs pages dans un fichier à part[VC++] Drag and drop d'un fichier sur une CDialog
[résolu]ouverture fichier excel plus possiblepb vidage contenu fichier en java
Obliger à l'ouverture d'un fichier excel d'enregistrer-sous un nom difLe fichier XML peut contenir des fichier ?
Plus de sujets relatifs à : lecture de fichier un peu complexe


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR