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 :

ofstream 2 question


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Août 2008
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 135
    Points : 83
    Points
    83
    Par défaut ofstream 2 question
    Bonjour,

    excuser moi pour l'intituler mais je ne sais pas trop comment le formuler, surtout que je n'utilise plus le français de façon active depuis quelques années.

    Problème 1:

    Quelle est le problème quand on ouvre des fichiers différents avec le même "flux":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    string h = "C:\\bug4data"+to_string(size)+".txt";  //size = 1
        ofstream File2(h.c_str(),ios_base::app);
    //jusqu'à ici c'est bon, et je fait un second appel à cette fonction
    string h = "C:\\bug4data"+to_string(size)+".txt";           //size = 2
        ofstream File2(h.c_str(),ios_base::app);
    //le fichier est créé mais le programe plante..
    J'ai déjà eu affaire à ce problème, à l'époque je commencer avec le c++ et j'avais tout simplement créé autant de fonctions que j'avais d'accès.
    Avec dans fonction1> File1(h.c_str(),ios_base::app); et
    dans fonction2> File2(h.c_str(),ios_base::app);
    mais là c'est tous simplement impossible.


    Deuxième question:
    J'obtiens des doubles que je souhaiterais avoir sous la forme binaire, voire hexadécimal dans ces fichiers. J'ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fichier<<hex<<double
    //et avec:
    File2.setf( ios_base::hex,ios_base::basefield ) ;  
    File2.setf ( ios::showbase );
    mais rien à faire, mes données sont toujours écrite sous la forme décimale.

    Idées/Suggestion?

    Merci, et bon week-end.

  2. #2
    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 : 49
    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
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par neismarspra Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    string h = "C:\\bug4data"+to_string(size)+".txt";  //size = 1
        ofstream File2(h.c_str(),ios_base::app);
    //jusqu'à ici c'est bon, et je fait un second appel à cette fonction
    string h = "C:\\bug4data"+to_string(size)+".txt";           //size = 2
        ofstream File2(h.c_str(),ios_base::app);
    //le fichier est créé mais le programe plante..
    Le code tel que tu l'écris n'est pas valide, tu déclares deux foix la même variable. Si tu veux qu'un flux ouvre un autre fichier, tu peux utiliser file.open("nom du fichier"), ou simplement créer une autre variable.
    Citation Envoyé par neismarspra Voir le message
    Deuxième question:
    J'obtiens des doubles que je souhaiterais avoir sous la forme binaire, voire hexadécimal dans ces fichiers. J'ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fichier<<hex<<double
    //et avec:
    File2.setf( ios_base::hex,ios_base::basefield ) ;  
    File2.setf ( ios::showbase );
    mais rien à faire, mes données sont toujours écrite sous la forme décimale.
    Je ne sais pas trop ce que tu entends par forme binaire pour des doubles. Si tu veux sauver un double sans mise en forme, mais simplement en mettant dans le fichier les n octets (souvent 8) qui servent à le représenter en interne en mémoire, il ne faut pas utiliser << (qui sert à faire des sorties formatées) mais des fonctions comme put et write de la classe ostream (qui font des sorties en brut, non formatées).

    Attention : Un tel fichier ne sera pas forcément relisible sur une autre machine qui encoderait différemment les doubles.
    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.

  3. #3
    Membre régulier
    Inscrit en
    Août 2008
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 135
    Points : 83
    Points
    83
    Par défaut
    Super, encore plus important que votre réponse de 18h15..
    En plus je passe pas mal de temps sur cplusplus.com et cppreference.com,
    et à chaque coup que je ne me souviens pas d'une fonction je lis la liste entière.


    (en faite ça a un lien directe avec l'autre question, j'ai besoin d'avoir les valeurs hex des doubles, pour debugger tous ce bazar:
    les valeurs sont transmises par une dll à partir d'un autre langage, et d'après mes calcule ils ont dégrader le type double de 8octets à 7-6....
    et bien évidemment ils n'ont pas actualisé la documentations englaise

    encore merci.

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

Discussions similaires

  1. question curiosité ofstream ifstream
    Par hibiscuit dans le forum C++
    Réponses: 7
    Dernier message: 20/09/2007, 15h18
  2. Réponses: 13
    Dernier message: 27/02/2007, 11h31
  3. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11
  4. Question de faisabilité
    Par lisarasu dans le forum CORBA
    Réponses: 3
    Dernier message: 14/05/2002, 11h26
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

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