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 :

std::ifstream et std::ofstream::close();


Sujet :

SL & STL C++

  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut std::ifstream et std::ofstream::close();
    Bonsoir,

    Je me posait la question suivante : lorsqu'un objet de type std::ifstream (pour fixer les idées) est détruit, typiquement à la fin du scope ou il est défini comme variable locale, le fichier est t'il fermé ?

    En d'autres termes, est-t'il nécessaire d'appeler la méthode close() de mon ifstream ?

    C'est clair que la méthode close() a un intérêt si on veut utiliser le même ifstream sur différents fichiers consécutivement. C'est bien une méthode symétrique de open().

    Mais comme il existe un constructeur de std::ifstream prenant un nom de fichier, j'imagine que le destructeur doit libérer naturellement le fichier en question.

    Merci bien,
    S.

  2. #2
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Oui ifstream implémente le RAII donc la ressource (ici le fichier) est libéré (fermé).

  3. #3
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Un autre intérêt de close, côté écriture, est de vérifier que, du point de vue C++ en tout cas (il peut y avoir des caches système voire hardware), l'écriture dans un ofstream s'est bien passée.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  4. #4
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut RAII
    Merci pour votre réponse !
    Donc pas besoin d'utiliser le close si l'objet est supprimé.
    Sylvain

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

Discussions similaires

  1. [std::ifstream] Lecture formatée lente
    Par HanLee dans le forum SL & STL
    Réponses: 15
    Dernier message: 31/05/2009, 01h35
  2. Réponses: 3
    Dernier message: 19/03/2008, 15h41
  3. Réponses: 3
    Dernier message: 08/02/2008, 19h34
  4. [SL] std::ifstream vers FILE
    Par yan dans le forum SL & STL
    Réponses: 2
    Dernier message: 07/08/2007, 16h08
  5. Réponses: 4
    Dernier message: 04/11/2005, 09h04

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