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 à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 11
    Points
    11
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    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 à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 11
    Points
    11
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    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 à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 11
    Points
    11
    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 éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    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 279
    Points : 11 015
    Points
    11 015
    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.
    }

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 11
    Points
    11
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

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

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 11
    Points
    11
    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 éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    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;

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 11
    Points
    11
    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 éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    oui, cf doc sur les ofstream ou : http://c.developpez.com/faq/cpp/?pag...fstream_append

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 11
    Points
    11
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

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

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 11
    Points
    11
    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