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

Boost C++ Discussion :

aide 1ère classe avec boost.filesystem


Sujet :

Boost C++

  1. #1
    Membre très actif
    Homme Profil pro
    technicien en électronique
    Inscrit en
    Octobre 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : technicien en électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 74
    Par défaut aide 1ère classe avec boost.filesystem
    salut,
    je fais ma première vraie classe (les autres c'étaient pour apprendre les bases) en utilisant pour la première fois boost...

    voici les codes:
    -programme principale pour le test de la 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
    #include <iostream>
    #include <string>
    #include "base_stock.h"
    #include "fichier_table.h"
     
     
     
    using namespace std;
     
    int main()
    {
    unsigned int nombre;
    Fichier_table test;
    boost::filesystem::path nom_f("ressources/table.rdb");
    vector<string> donnees;
     
    cout<<"Combien de nom à enregistrer?"<<endl;
    cin>>nombre;
    donnees.resize(nombre);
    for(unsigned int n=0;n<nombre;n++)
    	{
    	cout<<"nom à enregistrer?"<<endl;
    	cin>>donnees[n];
    	}
    if(test.creer_fichier(nom_f,donnees))
    	{
    	cout<<"réussi"<<endl;
    	}
    else
    	{
    	}
    return 0;
    }
    -headers de la 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
    #ifndef FICHIER_TABLE
    #define FICHIER_TABLE
     
    #include <string>
    #include <vector>
    #include "filesystem/fstream.hpp"
     
    /*	gère le fichier de la table du même nom dans la base de donnée
    */
     
    class Fichier_table
    	{
    	private:
    		boost::filesystem::path m_nom_fichier;
    		std::vector<std::string> m_nom_colonnes;
     
    	public:
    		bool creer_fichier(boost::filesystem::path nom_fichier,std::vector<std::string> &nom_colonnes);
    		std::vector<std::string> lire_fichier(boost::filesystem::path fichier) const;
    		bool ajout_donnee(std::string colonne);
    		bool supprimer_fichier(std::string nom_fichier);
    	};
     
    #endif
    -fichiers cpp de la 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
    #include "fichier_table.h"
    #include "filesystem/fstream.hpp"
     
    bool Fichier_table::creer_fichier(boost::filesystem::path nom_fichier,std::vector<std::string> &nom_colonnes)
    {
    boost::filesystem::ofstream creation(nom_fichier);
    if (creation)
    	{
    	m_nom_colonnes.resize(nom_colonnes.size());
    	creation<<nom_colonnes.size();
    	for(unsigned int n=0;n<nom_colonnes.size();n++)
    		{
    		creation<<nom_colonnes[n];
    		m_nom_colonnes[n]=nom_colonnes[n];
    		}
    	creation.close();
    	return true;
    	}
    else
    	{
    	return false;
    	}
    }
     
    std::vector<std::string> Fichier_table::lire_fichier(boost::filesystem::path fichier) const
    {
    return m_nom_colonnes;
    }
     
    bool Fichier_table::ajout_donnee(std::string colonne)
    {
    return false;
    }
     
    bool Fichier_table::supprimer_fichier(std::string nom_fichier)
    {
    return false;
    }
    ma classe doit me servir pour lire et écrire dans un fichier spécifique (données enregistrées dans un certain ordre)

    mon problème c'est que la classe ne marche pas (je sais j'ai pas fini de la créer)
    où est mon problème?

    edit: j'oubliai je suis sous ubuntu et j'utilise code::blocks

  2. #2
    Membre très actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par défaut
    Qu'est-ce qui ne marche pas exactement ? As-tu des messages d'erreur quand tu compiles ?

  3. #3
    Membre très actif
    Homme Profil pro
    technicien en électronique
    Inscrit en
    Octobre 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : technicien en électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 74
    Par défaut
    en fait je n'ai aucun message d'erreur lors de la compilation...
    là où ça marche pas c'est dans le main à la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(test.creer_fichier(nom_f,donnees))
    	{
    	cout<<"réussi"<<endl;
    	}
    aucun fichier n'est créé à ce moment là...

  4. #4
    Membre très actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boost::filesystem::path nom_f("ressources/table.rdb");
    Ca path relatif doit être le problème. Essai de passer un path absolu, ou de combiner avec current_path()
    http://www.boost.org/doc/libs/1_39_0...l#current_path

  5. #5
    Membre très actif
    Homme Profil pro
    technicien en électronique
    Inscrit en
    Octobre 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : technicien en électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 74
    Par défaut
    j'ai modifié et ajouté un affichage du chemin celui-ci est bon...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    boost::filesystem::path nom_f(boost::filesystem::initial_path()/"Ressources/table.rdb");
    vector<string> donnees;
    cout<<nom_f<<endl;
    ça vient probablement de ma classe...

    Edit: je me demande si le dossier n'existe pas, la classe ofstream est elle capable de le créer dans ce cas?
    il faudrait peut-être que je créer le dossier... je vais faire le test en créant manuellement le dossier pour voir...

    Edit2: c'est bien ça ça marche une fois que le dossier est créer maintenant va falloir que je cherche comment le créer...

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 153
    Par défaut
    jetes un oeil à create_directory.
    --
    Jérémie

  7. #7
    Membre très actif
    Homme Profil pro
    technicien en électronique
    Inscrit en
    Octobre 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : technicien en électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 74
    Par défaut
    ok merci beaucoup
    je vais réécrire ma classe du coup...

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

Discussions similaires

  1. Attributs de fichiers avec Boost::FileSystem
    Par Furr dans le forum Boost
    Réponses: 3
    Dernier message: 26/08/2009, 17h28
  2. boost filesystem avec Visual C++ 7
    Par tlemcenvisit dans le forum Boost
    Réponses: 1
    Dernier message: 08/11/2008, 11h10
  3. boost::filesystem - problème avec seekg
    Par Kromagg dans le forum Boost
    Réponses: 2
    Dernier message: 22/10/2008, 15h47
  4. Réponses: 3
    Dernier message: 29/07/2008, 20h03
  5. Réponses: 18
    Dernier message: 28/08/2006, 23h07

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