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 :

tableau de fichiers


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Par défaut tableau de fichiers
    bonjour,
    j'aimerais créer un tableau de fichiers ouvert en écriture et qui se placent directement à la fin du fichier. J'ai cherché mais, je ne sais pas du tt comment faire..
    si je fais ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      ofstream *file = new ofstream[5];
      for (int i=0; i<5; ++i)
        {
               sprintf(outputFile,"fichier%d.txt",i);
            ofstream file[i](outputFile, ios_base::app );
        }
    il me dit que ma variable file n'est pas initialisé
    j'ai aussi une erreur qui me dit que ios_base est private...
    Comment je dois faire???

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Tu ne peux pas utiliser une variable comme ça, c'est une déclaration de variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ofstream file[i](outputFile, ios_base::app );
    Plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     file[i] = ofstream(outputFile, ios_base::app );

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Par défaut
    effectivement ça m'a l'air plus plausible comme ça, mais ça ne me résout toujours pas mon problème de ios_base private...
    j'ai l'erreur de compilation :

    738 C:\Dev-Cpp\include\c++\3.4.2\bits\ios_base.h `std::ios_base::ios_base(const std::ios_base&)' is private

    je comprends pas pourquoi ça me fait ça.

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    On a pas le droit d'utiliser le constructeur par copie, c'est tout. Bon, tu as essayé avec juste ce bout de code alors, et ça ne marche pas, c'est ça ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Par défaut
    voila le programme que j'essaie de compiler :
    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
     
    #include <fstream>
    #include <string> 
    #include <iostream>
    using namespace std;
     
    int main()
    {
        char *outputFile = new char[15];
     ofstream *file = new ofstream[5];
      for (int i=0; i<5; ++i)
        {
               sprintf(outputFile,"fichier%d.txt",i);
               file[i]= ofstream(outputFile,ios_base::app );
        }
    }

    j'ai extrait ça d'un plus gros programme (car la celui ci sert absolument à rien à part à tester) mais ça fait la même erreur

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    std::vector<std::ostream*> fichiers;
    for (int i =0 ; i!=N ; ++i) {
        std::ostringstream oss;
        oss << "fichier" << i << ".txt";
        std::auto_ptr<ostream*> fic(new std::ofstream(oss.str().c_str());
        if (*fic) {
            fichiers.push_back(fic.get());
            fic.release();
        }
        // restitution implicite de la mémoire si le fichier ne peut être ouvert.
    }
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Par défaut
    heu j'ai l'erreur :
    no matching function for call to `std::vector<std::ostream*, std::allocator<std::ostream*> >::push_back(std::ostream**)'

  8. #8
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    c'est std::autoptr<std::ostream>, sans l'étoile, c'est pour ça

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Par défaut
    oki ça compile !
    mais comment je fait maintenant pour mettre du texte à la fin du fichier?
    la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fichiers[i] << "blablabla" <<endl;
    ne fonctionne pas.

  10. #10
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    c'est parce que ton tableau contient des pointeurs de fstream
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (*fichiers[i]) << "blablabla" <<endl;
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Par défaut
    oki ça compile mais il me reste encore quelques problèmes.
    Les fichiers que j'ouvre sont déja existant et ce code me supprime tt ce qu'ils contiennent.
    Est ce qu'il est possible qu'ils puissent s'ouvrir a la fin du fichier deja existant?

  12. #12
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    oui, cf doc sur les ofstream ou : http://c.developpez.com/faq/cpp/?pag...fstream_append
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Par défaut
    j'ai essayer ça ne fonctionne pas... la commade ios_base::app m'empeche de compiler... j'ai deja poster plus haut que ça me renvoyait une erreur en me disant que ios_base était private.
    je commence a plus du tout savoir comment faire.
    est ce que ça vient de mes includes ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <vector>
    #include <sstream>

  14. #14
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Réessaie, tu ne fais plus de copie.

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Par défaut
    comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::auto_ptr<ostream> fic(new std::ofstream(oss.str().c_str(),ios_base::app))
    ça marche ...
    je mettais le ios_base:app pas dans la bonne parenthèse

    Merci pour tout ce que vous avez fait pour moi !

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

Discussions similaires

  1. [Tableaux] tableau dans fichier rtf
    Par crischprolch dans le forum Langage
    Réponses: 1
    Dernier message: 04/07/2007, 11h17
  2. classement tableau de fichiers
    Par barbiche dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/03/2007, 11h26
  3. Conversion d'un tableau en fichier Excel.
    Par Fred2209 dans le forum C++Builder
    Réponses: 13
    Dernier message: 26/10/2006, 20h41
  4. tableau et fichier text
    Par tarekcom dans le forum Débuter
    Réponses: 25
    Dernier message: 05/05/2006, 21h30
  5. tableau et fichier
    Par vince2005 dans le forum Langage
    Réponses: 1
    Dernier message: 27/03/2006, 16h21

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