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 :

FILE * et ofstream


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 FILE * et ofstream
    Bonjour !
    Pour faire quelques graphes avec gnuplot depuis c++, la plupart de gens font (sous gcc)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FILE * bidule = popen("gnuplot","w");
    puis font des fprintf dans le FILE* pour écrire des commande dans la console de gnuplot.

    Sous visual, ça donne,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FILE * bidule = _popen("pgnuplot.exe","w");
    en supposant que pgnuplot.exe est dans le PATH .

    Comme je n'aime pas écrire des fprintf en c++, j'ai fait ceci dans un premier temps (pour visual) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::ofstream gnuplot(_popen("pgnuplot.exe","w"));
    Ce qui permet d'utiliser les opérateurs << pour écrire donner des commandes à gnuplot.

    Seulement, l'analogue sous gcc ne fonctionne pas parce qu'il ne sait pas construire un ofstream à partir d'un FILE* .

    Quelqu'un a une solution ?
    Sylvain

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    utiliser le constructeur ofstream qui attend un const char* ?

    PS: ce code ne devarit même pas compiler avec Visual
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    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 292
    Par défaut
    Dans boost.iostream, il y a une classe utilitaire qui permet d'encapsuler des FILE* pour s'en servir comme destination d'un ostream
    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...

  4. #4
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut
    Apparemment, ça compile bien sur visual tel quel (avec _popen).
    Pas sous gcc. FILE * et char * ne sont pas le même type. (J'ai essayé aussi en faisant un cast forcé)
    Pour la solution utilisant boost, j'ai utilisé un fdostream. Et ça marche bien
    Merci pour vos réponses.
    Sylvain

  5. #5
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Pouvoir construire un fstream à partir d'un FILE* ou d'un fd était une possibilité relativement commune qui n'a pas été standardisée et donc s'est retrouvée mise de côté petit à petit (je suis curieux, c'est quelle version de VC++?).

Discussions similaires

  1. cast ofstream FILE*
    Par lezurp dans le forum C++
    Réponses: 10
    Dernier message: 05/02/2009, 20h14
  2. passer FILE* en argument d une fonction
    Par Monsieur_Manu dans le forum C
    Réponses: 9
    Dernier message: 10/04/2003, 17h56
  3. [File et Directory ListBox] Soucis de filtre
    Par Mercilius dans le forum Composants VCL
    Réponses: 8
    Dernier message: 04/04/2003, 16h17
  4. A propos des 'File management Functions' de Windows
    Par znaidi dans le forum Windows
    Réponses: 3
    Dernier message: 01/04/2003, 16h01
  5. recupèrer file d'attente d'impression
    Par magic corp. dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2002, 14h12

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