IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

lecture fichier csv


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    D�cembre 2010
    Messages
    190
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 190
    Par d�faut lecture fichier csv
    Bonjour,

    J'ai un soucis pour la lecture d'un fichier csv. Je lis un ensemble de donn�es dont des chaines de caract�res mais le probl�me est que celles-ci peuvent contenir des point-virgule. Jusqu'� maintenant, je lisais le fichier avec la fonction getline en utilisant le point-virgule comme caract�re de s�paration mais du coup �a ne fonctionne pas si certaines chaines en contiennent.

    Je pensais mettre ces chaines entre guillemets pour diff�rentier les donn�es des s�parateurs mais comment doit-je lire alors le fichier en C++ pour r�cup�rer ce qu'il y a � l'int�rieur des guillemets?

    Merci d'avance

  2. #2
    Invit� de passage
    Profil pro
    Inscrit en
    Ao�t 2012
    Messages
    1
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2012
    Messages : 1
    Par d�faut
    la fonction getline est � �viter... il vaut mieux que tu s�pare tes �l�ments manuellement en lisant caract�res par caract�res (fread en c ou getc (un truc comme sa) et tu coupe les chaines si tu tombe sur ; ou '\n'

    ex:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #include <vector>
    #include <string>
    #include <cstdio>
    FILE* file = fopen("name");
    std::vector<std::string> strs;
    std::string cur_str;
    char current;
    while (fread(&current,1,1,file))
    {
       if (current == '\n' || current == ';')
       {
            strs.push_back(cur_str);
            cur_str = "";
       }
       else
           cur_str += current;
     
    }

  3. #3
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    J'ai deja vu des bibliotheques proposant des parseurs CSV. Je chercherais a en utiliser une (desole, j'ai pas de recommandation) avant d'ecrire la mienne: le format CSV etant plus un peu complexe que ce qu'on peut penser - sans parler de l'existence de variantes -, les choses trop simples finissent toujours par poser des problemes.

    Si tu dois le faire a la main, il va te falloir lire caractere par caractere, en utilisant istream::get ou streambuf::{sgetc,snextc,sbumpc}.

  4. #4
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Bonjour,

    Pourquoi ne pas tout simplement changer de d�limiteur ? csv ne le permet plus (pas) ?
    J'ai eu un cas similaire il y a 3 ans, ce fut la solution retenue pour notre part.

    Dans le cas o� tu r��cris toi-m�me un parser (sigh), oui tu peux bluffer en encadrant ta cha�ne de "", avec un simple flag qui indique si oui ou non tu es dans une cha�ne et traiter un �ventuel ;
    Mais c'est bien dommage de r�inventer une roue aussi basique et que nombre de personne ont d�j� �prouv�.
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

Discussions similaires

  1. lecture fichier CSV
    Par kodshadow dans le forum D�buter
    R�ponses: 6
    Dernier message: 22/12/2008, 16h42
  2. [MySQL] Lecture fichier CSV et enregistrement dans la base
    Par tifsa dans le forum PHP & Base de donn�es
    R�ponses: 6
    Dernier message: 26/09/2008, 12h49
  3. Lecture fichier .csv par colonne
    Par BRAUKRIS dans le forum Langage
    R�ponses: 3
    Dernier message: 05/10/2007, 14h08
  4. Lecture fichier CSV
    Par Iphelias dans le forum Entr�e/Sortie
    R�ponses: 4
    Dernier message: 14/06/2007, 21h58
  5. lecture fichier .csv
    Par wiss20000 dans le forum Entr�e/Sortie
    R�ponses: 4
    Dernier message: 06/06/2007, 20h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo