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 :

sortie en lieu et place d un fichier


Sujet :

C++

  1. #1
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut sortie en lieu et place d un fichier
    salut a tous,

    avant j'ecrivais des fichiers pour sauver des info à envoyer plus loin.

    Maitenant je passe des pointer et des longueurs. Seuleument pour formater ma memoire de la meme manière que les fichier, j aimerais utilier des objet similaires.

    Comme mes fichier sont des ofstream, ja penser utiliser des ostrstream, mais je ne comprend pas comment utiliser cette classe et surtout est-un bon choix ?

  2. #2
    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
    Pas ostrstream (obsolète / pas standard), mais std::ostringstream.

    Ca marche tout pareil que n'importe quel ostream, sauf que la sortie se fait dans une chaîne de caractère, récupérable via std::ostringstream::str().

  3. #3
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    cool cool cool,

    encore une question,

    la memoire utiliser pour recuperer le stream ( avec .str() )doit etre reserver par qui ?

  4. #4
    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
    La chaîne est renvoyée par valeur sous forme de std::string, donc t'as pas à t'embêter avec une quelconque allocation de mémoire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::ostringstream oss;
    oss << ...;
    std::string str = oss.str();

  5. #5
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    dernière question:

    comme les deux object (ofstream & ostringstram) sont des ostream, j ai fait une methode gtenerique qui ecrit dans un stream...

    Je me demandais juste s il y avait une restriction dans le upcasting fait pour passer la cible (ofstream ou ostringstram) à la methode d'ecriture... ?

    ma fct d ecriture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WriteToStream(std::ostream & _OStream)
    appelé par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //open file
    std::ofstream l_OutputFile;	
    l_OutputFile.open(_sFileName, std::ios_base::out | std::ios_base::trunc | std::ios_base::binary);
    //fill
    l_bResult = this->WriteToStream(dynamic_cast<std::ostream&>(l_OutputFile));
     
    //close file
    l_OutputFile.close();

  6. #6
    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
    L'upcasting est automatique, pas besoin de sortir un dynamic_cast (la conversion en classe mère est toujours possible, contrairement au downcasting).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    l_bResult = this->WriteToStream(l_OutputFile);

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/01/2008, 17h13
  2. Réponses: 6
    Dernier message: 24/12/2007, 01h43
  3. Réponses: 11
    Dernier message: 20/09/2007, 17h58
  4. redériger la sortie d'un appel system vers un fichier?
    Par foufoulina2007 dans le forum Langage
    Réponses: 5
    Dernier message: 27/07/2007, 09h24
  5. pointeur en lieu et place de tableau
    Par gauguin dans le forum C
    Réponses: 11
    Dernier message: 13/02/2007, 14h34

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