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 :

Fichier csv et Code blocks


Sujet :

C++

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 16
    Points : 21
    Points
    21
    Par défaut Fichier csv et Code blocks
    Bonjour tout le monde,

    J'ai besoin de votre aide sur ce petit problème sur code blocks. Je vous remercie d'avance pour tous vos réponses
    J'ai un fichier.csv, il contient x lignes et y colonnes, mais je sais pas comment faire pour importer les données de ce fichier sur code blocks
    J'ai trouvé pas mal de programme c++ en ligne mais tous étaient non fonctionnels, à chaque fois il y avaient des erreurs qui j'arrive pas à les comprendre (je suis débutante en programmation cpp).

    Svp qui peut m'aider pour avoir un prog fonctionnel

    Merci

  2. #2
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut
    Salut,

    La lecture de fichiers CSV n'est pas directe en C++. Venant de R qui automatise complètement leur lecture avec ses fameux dataframes et sa fonmction read.csv, cela m'a déstabilisé. Finalement lire un CSV est une tache pas triviale du tout et C++ nous le rappelle, c'est tout.

    Il y a deux ans j'avais écrit un script quick&dirty très spécifique a mon problème pour lire un csv. Crado + spécifique = pas réutilisable, donc deux ans après je dois me retaper le même travail pour un fichier un peu différent, et j'essaie de faire les choses un peu mieux: jette un coup d’œil a ce tutoriel: https://julien-blanc.developpez.com/...csv-c++/#LIX-A

    Le code propose est assez général pour être réutilisable, mais ce n'est pas certain que ce soit facile a comprendre. Si tu ne peux/veux pas utiliser ce code, parce que trop général et trop complexe, mais que tu as du mal a écrire ton propre code pour une utilisation plus spécifique a ton problème, on peut t'aider, mais il va falloir que tu en dises plus sur la structure de ton fichier et l'utilisation que tu veux en faire.

    Bon courage!
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 16
    Points : 21
    Points
    21
    Par défaut
    Salut,

    Je vous remercie de m'avoir répondu

    Je vais vous expliquer quel est l'objectif de mon programme:
    1- importer mon fichier.csv sur code::blocks (ce fichier est constitué des valeurs de type double);
    2- stocker ces valeurs dans une matrice de n lignes et m colonnes (dans mon cas 202 lignes et 16 colonnes);
    3- appliquer quelques formules mathématiques sur les [i][j] de la matrice.

    Je me suis dit que je dois commencer par un truc simple par exemple une lignes composée de 2 valeurs doubles séparées par un point virgule (.
    En utilisant getline() j'ai réussi à lire ma ligne, après je sais bien qu'il faut utiliser les fonctions find et substr pour la découper et vector<double> pour stocker le résultat.
    Mais j'ai pas compris comment utiliser les fonctions find, substr, vector
    tt ce que j'ai réussi à faire c'est lire la ligne avec getline
    voilà mon code :

    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
    #include <stdlib.h>
    #include <iostream>
    #include <fstream>
    #include <sstream>
    #include <vector>
    #include <cstdio>
    #include <string.h>
    using namespace std;
     
    int main()
    {
       ifstream fichier ("C:/Users/AH673B4N/Documents/_Developpement/Dymola/ThreePhaseCableABCDBuilder/Inputs/mesuree.csv");
        if (fichier)
        {
            string ligne;
            while(getline(fichier,ligne))
     
            {
                cout << ligne<< endl;
                int pos = ligne.find (";");
                string ligne1;
                ligne1 = ligne.substr(pos+1);
                cout << ligne1<<endl;
            }
        }
        else
        {
            cout << " erreur" << endl;
        }
     
        return 0;
    }
    et voilà la sortie de mon code :
    Nom : Capture.PNG
Affichages : 689
Taille : 12,1 Ko


    Svp n'hésitez pas à me donner vos conseils
    Merci

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Pour le découpage d'une chaine avec des ";" :
    https://stackoverflow.com/questions/...ing-tokens-e-g

    Sinon, Google (et la communauté surtout) est ton ami:
    https://github.com/ben-strasser/fast-cpp-csv-parser

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 16
    Points : 21
    Points
    21
    Par défaut
    Bonjour

    j'ai fait un petit essai avec un fichier simple composé d'une seul ligne qui contient deux valeurs doubles.
    j'ai réussi à lire ce fichier et découper la ligne en fonction de mon délimiteur (le point virgule) et de stocker les deux valeurs dans un vecteur.
    voici mon code et si vous avez des remarques enrichissantes n'hésitez pas à laisser un commentaire.

    merci

    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
    #include <iostream>
    #include <stdlib.h>
    #include <iostream>
    #include <fstream>
    #include <sstream>
    #include <vector>
    #include <cstdio>
    #include <string.h>
    #include <cstdlib>
     
    using namespace std;
     
     
    int main()
    {
       ifstream file("fichier.csv");
       string line;
       vector<double> vec;
       while (getline(file, line))
    {
           cout << line << endl;
           istringstream ss(line);
           string word;
           while (getline(ss, word,';')){
           double value = strtod(word.c_str(), NULL); // cnversion string to double
           vec.push_back(value); //remplissage du vecteur
      }
    }
    //Affichage du vecteur
    for (int i = 0; i < vec.size(); i++){
            cout << vec[i] << '\n';
     }
     //cout << vec[0] << " " << vec [1] ;
        return 0;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. linker fichier .res dans code blocks
    Par mukiwara dans le forum Code::Blocks
    Réponses: 2
    Dernier message: 01/09/2012, 11h45
  2. créer un fichier .lib avec code::blocks
    Par jellad.tarek dans le forum Bibliothèques, systèmes et outils
    Réponses: 9
    Dernier message: 24/03/2012, 09h48
  3. Fichiers générés par Code::Blocks
    Par Darkthief dans le forum Code::Blocks
    Réponses: 3
    Dernier message: 06/08/2009, 08h11
  4. code::blocks et les fichiers
    Par acacia dans le forum Code::Blocks
    Réponses: 5
    Dernier message: 17/05/2008, 21h41
  5. Problème prise en compte fichier Code:Blocks
    Par drefou dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 11/09/2007, 10h34

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