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 :

Probleme lors de l'ouverture d'un fichier avec ofstream


Sujet :

C++

  1. #1
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut Probleme lors de l'ouverture d'un fichier avec ofstream
    Bonjour,

    J'ai un fichier que je veux ouvrir pour y ecrire à la fin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ofstream file;
    file.open(pathname, ios::out | ios::ate);
    Lorsque j'execute cette ligne, le fichier correspondant se vide.....
    Je ne sais pas quel parametre utiliser pour concerver le fichier.

    ps : je ne peux pas utilise ios::app car je veux également écrire à au début.

    Merci de votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Par défaut, un fichier ouvert en écriture l'est en mode ios::trunc: son contenu précédent est effacé dès la première écriture...

    ios::ate te positionne à la fin du fichier, mais tu restes quand meme en mode trunc. (en fait, ios::ate sert quand tu lis le fichier, par exemple pour récupérer sa taille par un tellg).

    Pour ouvrir un fichier de façon à écrire à la fin, il faut ios::app (append).

    Donc, essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ofstream file(pathname, ios::app);
    tu n'as pas besoin du ios::out, c'est fourni par la déclaration ofstream, et le constructeur peut ouvrir le fichier.

    ios::app ne t'empêche pas de lire. Tu ouvres le fichier comme cela, puis tu peux te positionner pour lire, etc... Maintenant, si tu veux lire et écrire, il faut fstream, pas ofstream...

    Francois

  3. #3
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    Citation Envoyé par fcharton Voir le message
    Par défaut, un fichier ouvert en écriture l'est en mode ios::trunc: son contenu précédent est effacé dès la première écriture...

    ios::ate te positionne à la fin du fichier, mais tu restes quand meme en mode trunc. (en fait, ios::ate sert quand tu lis le fichier, par exemple pour récupérer sa taille par un tellg).

    Pour ouvrir un fichier de façon à écrire à la fin, il faut ios::app (append).

    Donc, essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ofstream file(pathname, ios::app);
    tu n'as pas besoin du ios::out, c'est fourni par la déclaration ofstream, et le constructeur peut ouvrir le fichier.

    ios::app ne t'empêche pas de lire. Tu ouvres le fichier comme cela, puis tu peux te positionner pour lire, etc... Maintenant, si tu veux lire et écrire, il faut fstream, pas ofstream...

    Francois
    sauf que je veux ecrire aussi autre part qu'à la fin du fichier. (je me suis trompé mon post)

  4. #4
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fstream file(path, ios::in | ios::out);
    Le code à utiliser.

  5. #5
    Membre régulier Avatar de BoudBoulMan
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 100
    Points : 116
    Points
    116
    Par défaut
    Tu peux utiliser la fonction seekp qui te permet de positionner l'endroit où la fonction put va mettre les données. Par contre, il écrase l'ancien contenu.

    Je pense que tu ne peux pas insérer du texte directement au sein d'un fichier (en début de fichier par exemple).
    Il faut que tu charges l'ensemble de ton fichier dans un conteneur. C'est alors dans ce conteneur que tu effectues toutes tes manipulations.
    Et tu finis par reouvrir ton fichier en mode trunc, et tu y stockes ce que contient ton conteneur.

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

Discussions similaires

  1. Probleme lors de l'ouverture d'un fichier binaire
    Par kevinl dans le forum Fortran
    Réponses: 8
    Dernier message: 08/03/2012, 08h36
  2. erreur lors de l'ouverture d'un fichier
    Par programaniac dans le forum Langage
    Réponses: 3
    Dernier message: 04/05/2007, 20h12
  3. [VBA] probleme lors de la creation d'un fichier
    Par tiotel dans le forum Access
    Réponses: 3
    Dernier message: 09/08/2006, 15h00
  4. plantage de qlqs secondes lors de l'ouverture d'un fichier
    Par princetn dans le forum Windows XP
    Réponses: 6
    Dernier message: 28/02/2006, 12h48
  5. problem lors de l'ecriture d'un fichier
    Par gemai dans le forum C
    Réponses: 20
    Dernier message: 29/08/2003, 15h01

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