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

SL & STL C++ Discussion :

[Fichier] Problemes dans l'utilisation de fstream


Sujet :

SL & STL C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 27
    Points : 23
    Points
    23
    Par défaut [Fichier] Problemes dans l'utilisation de fstream
    Bonjour à tous,
    je suis en train de developper une classe File, chargée d'encapsuler des opérations d'entrée/sortie sur des fichiers. En conséquence, j'ai utilisé un fstream comme flux.
    Je rencontre de multiples problemes/interrogations:



    • J'aimerai pouvoir supprimer des elements du flux un peu comme erase(..) le permet pour une string. La fonction adéquate semble etre ignore(..) mais apres plusieurs tests, celle-ci ne semble pas supprimer d'élément dans le flux, elle changerait seulement la position du 'curseur' dans le fichier....



    Merci beaucoup.

  2. #2
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2007
    Messages : 157
    Points : 151
    Points
    151

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 27
    Points : 23
    Points
    23
    Par défaut
    C'est la première page que j'ai regardée avant même de poster, voire de penser à poster...

  4. #4
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2007
    Messages : 157
    Points : 151
    Points
    151
    Par défaut
    C'est la première page que j'ai regardée avant même de poster, voire de penser à poster...
    COOL

    Maintenant, le taille du fichier que tu transmets a ta classe fait quelle taille?

    J'ai essayé de prendre tes deux exemples, ils fonctionnent tous deux sur mon unité de dev.
    N'y aurait il pas un problème en amont, qui mettrait en l'air un pointeur de pile, qui se revele avec le app?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 27
    Points : 23
    Points
    23
    Par défaut
    Je pense pas non...
    A l'exécution de ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <iostream>
    #include <fstream>
    #include <sstream>
     
    int main()
    {
        std::fstream f;
        f.open("t.txt",std::ios::in|std::ios::out|std::ios::app);   
        std::cout<<"Ouverture: "<<f.is_open()<<std::endl;
    return 0;   
    }
    La console m'affiche:
    Je précise que le résultat est le même, que le fichier "t.txt "existe ou non, et qu'il soit vide ou qu'il contienne quelques caractères...

  6. #6
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2007
    Messages : 157
    Points : 151
    Points
    151
    Par défaut
    En effet c louche ton histoire...

    Plusieurs possibilitées, un problème de droits sur ton poste, mais si ca marche avec trunc... c pas ca

    Problème de configuration du compilateur, la essaie de mettre une autre plateforme de dev pour verifier.

  7. #7
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Ce n'est pas une combinaison de flags valide d'apres la norme. Et dans ce cas, elle demande que l'ouverture echoue.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 27
    Points : 23
    Points
    23
    Par défaut
    Si cette combinaison n'est pas valide alors quelle est la combinaison valide pour ouvrir un fichier en lecture/écriture et qu'il n'efface pas le contenu du fichier s'il existe déjà?
    Merci

  9. #9
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    in|out. app c'est pour que toutes les ecritures soient automatiquement a la fin (app se traduit generalement par l'utilisation d'une possibilite du systeme pour que le positionnement a la fin et l'ecriture forme un groupe atomique). C'est different de ate qui positionne le fichier a la fin lors de l'ouverture et n'a pas d'influence sur la suite.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 27
    Points : 23
    Points
    23
    Par défaut
    Merci bien, l'erreur était celle que tu as citée...Cela marche maintenant.
    Sinon quelqu'un saurait-il la réponse à ma deuxième question, à savoir quelle fontion utiliser pour supprimer des caracteres dans un fstream (j'ai cherché sans succès..)?

  11. #11
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Kerwando
    Merci bien, l'erreur était celle que tu as citée...Cela marche maintenant.
    Sinon quelqu'un saurait-il la réponse à ma deuxième question, à savoir quelle fontion utiliser pour supprimer des caracteres dans un fstream (j'ai cherché sans succès..)?
    Impossible. Il faut les écraser manuellement en recopiant ce qui suit.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 27
    Points : 23
    Points
    23
    Par défaut
    Et si on désire supprimer les n derniers caracteres d'un fstream, par exemple pour réduire sa taille et par la même la taille du fichier, comment fait-on?

    Attendu que ce sont les derniers caracteres du fstream on ne peut pas les ecraser en recopiant ceux qui suivent..

  13. #13
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    De manière générale, lorsque tu veux modifier le contenu d'un fichier, il faut faire toutes tes modifs dans une variable temporaire (un tableau, un flux ostringstream, une chaîne, ...), effacer le fichier puis y replacer ta variable temporaire.

  14. #14
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 626
    Points : 30 684
    Points
    30 684
    Par défaut
    Salut,

    Même si un fichier n'est jamais qu'une succession ordonnée de bits et que ce que je vais dire est quelque peu excessif, il faut garder en mémoire que le contenu d'un fichier est "gravé dans le marbre"...

    Tu peux rajouter - sous conditions - des informations à la fin mais le seul moyen de modifier ou de supprimer une information contenue dans le fichier c'est... de casser la pierre sur laquelle l'information apparaît et d'en graver une autre

    La manière de t'y prendre est à ton choix - soit tu écrit un fichier temporaire que tu renommes après avoir effacer l'original, soit tu utilise un "buffer" temporaire, que tu écrit d'une traite en bloc à la place de l'original - mais le résultat reste le même: tu dois supprimer l'original avant d'y mettre la copie modifiée
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 27
    Points : 23
    Points
    23
    Par défaut
    Et bien merci pour toutes ces précisions.

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

Discussions similaires

  1. probleme dans l'utilisation du control Datetimepicker
    Par yassine-art dans le forum VB.NET
    Réponses: 2
    Dernier message: 03/06/2011, 12h48
  2. Réponses: 2
    Dernier message: 08/06/2010, 22h40
  3. [FPDF] Probleme dans l'utilisation de la classe FPDF et les tableaux
    Par mathieu77186 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 24/04/2008, 22h03
  4. Réponses: 2
    Dernier message: 04/08/2007, 19h26
  5. probleme dans l'utilisation de la fonction include
    Par cortex007 dans le forum Langage
    Réponses: 7
    Dernier message: 27/01/2006, 17h37

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