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

  FORUM HardWare.fr
  Programmation
  C++

  lecture fichier de données séparés par des tabulations

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

lecture fichier de données séparés par des tabulations

n°1767609
mathematic​a
Posté le 01-08-2008 à 09:24:42  profilanswer
 

Bonjour,
 
je souhaiterais lire un fichier de donénes text .... on a plsueiurs lignes et plueisurs colonnes séparées par des tabulation, le but est de récupérer chaque ligne et de la considérer comme un nouvel objet de ma classe que je stockerai ds un tableau.

mood
Publicité
Posté le 01-08-2008 à 09:24:42  profilanswer
 

n°1767615
Joel F
Real men use unique_ptr
Posté le 01-08-2008 à 09:38:54  profilanswer
 

getline pour lire chaque ligne, boost::tokenizer pour extraire les morceaux de ta ligne. A répéter tant que getline renvoit ce qui faut.

 

J'ai donner un exemple complet 2-3 fois pr le même problème, use the Search button Luke !

 
Code :
  1. #include <vector>
  2. #include <string>
  3. #include <fstream>
  4. #include <boost/tokenizer.hpp>
  5. using namespace std;
  6. using namespace boost;
  7. int main()
  8. {
  9.   vector<string> colonne;
  10.   string ligne;
  11.   ofstream fichier("truc.txt" );
  12.   // Tant que j'ai des lignes à lire
  13.   while (getline (fichier, ligne))
  14.   {
  15.     typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
  16.     boost::char_separator<char> sep("\t" );
  17.     // tokenisation de la ligne courante
  18.     tokenizer tokens(ligne, sep);
  19.     // Recup des tokens via un token_iterator
  20.     tokenizer::iterator tok_iter = tokens.begin();
  21.     while(tok_iter != tokens.end())
  22.     {
  23.         // ici *tok_iter conteint ta colonne courante, tu en fais ce que tu veux
  24.      // colonne suivante
  25.       tok_iter++;
  26.     }
  27.   }
  28.   return 0;
  29. }


Message édité par Joel F le 01-08-2008 à 09:43:51
n°1768429
mathematic​a
Posté le 03-08-2008 à 11:34:39  profilanswer
 

Citation :


 
typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
    boost::char_separator<char> sep("\t" );
 
 


 
 
Je vous remercie pour votre réponse, mais je ne connais pas du tous cette fonction ... pouvez vous m'expliquer je vous prie le raisonnement de votre code .
 
je vous remercie.
 
PS: il y a une autre façon de faire ss utiliser la fonction tokenize, mais dans le cas ou on a des points virgules en guise dséparateur, il suffirait d'extraire les sous chianes a cahque fois qu'il y a des points virgules ... ne pouvons pas faire paeil dans le cas d'une tabulation ????? somme nous obliger d'utiliser la fonction tokenize ? n'aurit il pas un auetr moyen ???
 
 Merci encore.  
 
A+++

n°1768435
Joel F
Real men use unique_ptr
Posté le 03-08-2008 à 12:10:01  profilanswer
 
n°1768442
mathematic​a
Posté le 03-08-2008 à 12:48:57  profilanswer
 

ok, mais qu'est ce qui spécifie le fait qu'on a une tabulation ???  
 
est ce le \t ??? dans ce cas la \n signifie quoi au juste ???

n°1768551
Un Program​meur
Posté le 03-08-2008 à 17:27:34  profilanswer
 

mathematica a écrit :

ok, mais qu'est ce qui spécifie le fait qu'on a une tabulation ???  
 
est ce le \t ??? dans ce cas la \n signifie quoi au juste ???


 
\t désigne en effet la tabulation, \n le caractère de fin de ligne.
Mais si tu ne connais pas ce genre de choses, je me demande si te donner une solution
sans boost peut t'aider beaucoup.  Mais bon, en voici une:
 

Code :
  1. #include <iostream>
  2. #include <istream>
  3. #include <ostream>
  4. #include <string>
  5. int main()
  6. {
  7.     std::string line;
  8.    
  9.     while (getline(std::cin, line))
  10.     {
  11.         std::string::size_type curpos = 0;
  12.         do {
  13.             std::string::size_type endpos = line.find('\t', curpos);
  14.             std::cout << '|' << line.substr(curpos, endpos-curpos) << "|\n";
  15.             curpos = endpos + 1;
  16.         } while (curpos != 0);
  17.         std::cout << "EOR\n";
  18.     }
  19.     return 0;
  20. }


Message édité par Un Programmeur le 03-08-2008 à 17:28:00

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

  lecture fichier de données séparés par des tabulations

 

Sujets relatifs
[C] Récupérer des données sur InternetOuverture d'un fichier en mode ajout
SQL vs Fichier[C] conversion fichier binaire Big-Little Endian [RESOLU]
[ VB6 ] Enregistrer Données ( combobox.txt, textbox.txt ) sous EXCELLecture de mes fichiers PHP dans mon serveur FTP
Convertir 1 colonne d'un fichier txt avec une fonction (ktime)Deplacer la base de donnees de mysql
mysqldump via PHP -> fichier vide ! 
Plus de sujets relatifs à : lecture fichier de données séparés par des tabulations


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