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 csv probleme


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 26
    Points
    26
    Par défaut lecture csv probleme
    Bonjour,
    J'ai un fichier csv contenant 3 collonnes (index,capteur1, capteur2).
    Capteur1 et capteur2 ont chacun leur valeur.
    Il y a 22 lignes dans le csv.
    J'aimerai lire tout le fichier grace a un programme en c++.
    Mais étant débutant en c++, je ne vois pas comment faire.
    Merci de vos réponses.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Points : 77
    Points
    77
    Par défaut
    Bonjour,
    il faut que tu passes par un flux ifstream par exemple, afin de lire ton fichier. Regarde au niveau de la FAQ C++ t'as des exemples qui pourront t'aider :
    Par ici la FAQ

    Bon courage

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par lemessindu57 Voir le message
    Bonjour,
    J'ai un fichier csv contenant 3 collonnes (index,capteur1, capteur2).
    Capteur1 et capteur2 ont chacun leur valeur.
    Il y a 22 lignes dans le csv.
    J'aimerai lire tout le fichier grace a un programme en c++.
    Mais étant débutant en c++, je ne vois pas comment faire.
    Merci de vos réponses.
    La classe csv_reader, dans csv_reader.h
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    #include <fstream>
    #include <sstream>
    #include <string>
    #include <vector>
     
    class csv_reader
    {
    private:
      std::ifstream m_file;
     
      void split(const std::string& in, char sep, std::vector<std::string>& out)
      {
        std::stringstream stream(in);
     
    	// check both failbit and eofbit
        while (stream && !stream.eof())
        {
           std::string token;
           std::getline(stream, token, sep);
           out.push_back(token);
        }
      }
     
    public:
      csv_reader(const std::string& path)
      : m_file(path.c_str())
      { }
     
      bool fetch_next_line(std::vector<std::string>& line, char sep)
      {
        line.clear();
     
    	// check both failbit and eofbit
        if (m_file && !m_file.eof())
        {
           std::string line_string;
           std::getline(m_file, line_string);
           split(line_string, sep, line);
           return true;
        }
        return false;
      }
    };
    L'utilisateur de cette classe:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    #include <iostream>
    #include "csv_reader.h"
     
    namespace details
    {
      template <class _Type>
      struct lexical
      {
        static _Type cast(const std::string& in)
        {
          std::stringstream stream(in);
          _Type out;
          stream >> out;
          return out;
        }
      };
    }
     
    int main(int ac, const char* av[])
    {
      if (ac != 2) 
      { 
        std::cerr << "pas de fichier passé en ligne de commande" << std::endl;
        return -1;
      }
     
      // création de l'objet de lecture du fichier CSV
      csv_reader reader(av[1]);
     
      // on va en avoir besoin pour stocker les lignes
      std::vector<std::string> line;
     
      // pour chaque ligne du fichier (séparateur = ',')
      while (reader.fetch_next_line(line, ','))
      {
        // le traitement dépends du contenu du CSV. 
        // pour récupérer une valeur d'un type donné, on peut utiliser 
        // details::lexical<>::cast définie si dessus. 
        // ex: 
        if (line.size() == 3)
        {
          int index = details::lexical<int>::cast(line[0]);
          float capteur1 = details::lexical<float>::cast(line[1]);
          float capteur2 = details::lexical<float>::cast(line[2]);
          // suite du traitement...
          std::cout << "index = " << index << std::endl;
          std::cout << "\tcapteur 1 = " << capteur1 << std::endl;
          std::cout << "\tcapteur 2 = " << capteur2 << std::endl;
        }
      }
    }
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

Discussions similaires

  1. Probleme d'espace lecture CSV
    Par renovatio34 dans le forum Général Java
    Réponses: 2
    Dernier message: 29/04/2013, 16h42
  2. Réponses: 3
    Dernier message: 23/08/2006, 16h30
  3. [ CSV ] probleme de lecture
    Par Jeremie_Vi dans le forum Access
    Réponses: 1
    Dernier message: 04/07/2006, 17h56
  4. [CSV] Probleme De Fichier
    Par stomerfull dans le forum Langage
    Réponses: 8
    Dernier message: 28/06/2006, 10h34
  5. Réponses: 9
    Dernier message: 31/01/2006, 22h42

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