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 :

Problème de conversion de données (ostringstream, string. . .)


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 224
    Par défaut Problème de conversion de données (ostringstream, string. . .)
    Voilà, je vais écrire une petite application réseau et pour cela j'essaye de créer une petite classe pour gérer les flux de données.

    Mon but et de décomposer mes "packets" en deux parties : entete + corps de message.

    Voici une partie de ma classe qui s'occupe de créer un packet :

    (Dans mon exemple HEADER_SIZE = 6 et PACKET_SIZE = 1024)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    class Packet {
        private:
        string m_data;
     
        public:
     
            Packet(unsigned long h, long b) { //Marche pas :(
                ostringstream body;
                body << b;
                Packet(h, body.str());
                }
     
            Packet(unsigned long h, string body) {
                ostringstream header;
                header << h;
     
                size_t header_len = header.str().size();
     
                if(header_len > HEADER_SIZE || header_len + body.size() > PACKET_SIZE)
                    return;
     
                string tmp;
                tmp.assign(HEADER_SIZE - header_len, '0');
                tmp += header.str();
                tmp += body;
                m_data = tmp;
                cout << tmp << "   " << m_data<<endl; //Affiche bien ce que je désire
                }
     
            ~Packet() {}
     
            string content() {
                cout << m_data; //N'affiche plus rien!
                return m_data; //Ne retourne rien!
                }
     
        };
    Voilà, en gros pour créer un packet du type "000005Salut à tous!" je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Packet pck(5, "Salut à tous!")
    et le résultat je le récupère avec :

    Mais comme vous l'avez surement remarqué, j'ai prévu un autre constructeur au cas où je veuille passer un entier en corps de message.

    J'appelle mon constructeur ainsi:

    Tout marche parfaitement, le corps de message est transmis au second constructeur sous la forme d'une chaine de caractère, et la dernière ligne du second constructeur m'affiche bien ce que je veux.

    Cependant, quand je tente de récupérer mon packet avec :
    Il n'y a plus rien dedans!

    Le code que j'ai masquée n'est jamais appellé, il s'agit juste de l'opération inverse, soit de récupérer un packet sous la forme entete + corps de message.

    Comment cela ce fait il?

    Si quelqu'un pouvait m'expliquer mon erreur!
    Merci bien!

  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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu ne peux pas appeler un constructeur, ou tout du moins ça n'aura pas l'effet attendu. C'est expliqué plus en détails dans la FAQ.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 224
    Par défaut
    Excellent! Je comprends à présent!

    Ce n'était pas la première fois que je faisais cette erreur en plus, je n'avais pas fait le rapprochement avec les constructeurs!

    Un grand merci pour une aide rapide et claire!

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

Discussions similaires

  1. problème de conversion de données
    Par gniarf dans le forum Cobol
    Réponses: 3
    Dernier message: 26/02/2010, 18h24
  2. [SSIS][2k5]Problème de conversion de données
    Par patriceharel dans le forum SSIS
    Réponses: 4
    Dernier message: 08/07/2009, 10h24
  3. [vb6] probléme de conversion de donnée
    Par lumbroso dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/11/2008, 23h22
  4. Problème de conversion de données
    Par tchoimars dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/11/2008, 11h29
  5. problème de conversion de données
    Par thierry007 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 06/05/2008, 21h39

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