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 :

Copie d'un buffer dans une structure


Sujet :

C++

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 84
    Par défaut Copie d'un buffer dans une structure
    Bonjour,

    je souhaite copier un buffer dans une structure.
    Sans passer par une methode du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    structure.item1 = buffer[n];
    car tous les elements de ma structure ne sont pas du meme type

    si quelqu'un a une idée, merci

  2. #2
    Membre éprouvé Avatar de Blowih
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 122
    Par défaut
    Bonjour,
    pourais tu detailler un peu plus ton probleme?

    sinon, la comme ça je dirais de passer par un constructeur adéquat de ta structure.

    Ben

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 84
    Par défaut
    Ma structure est du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    struct structure
        {
        int8 item1;
        int8 item2;
        int16 item3;
        int8 item4;
        int32 item5
        int8 item6;
        int16 item7;
        };
    donc elle occupe 3*32bits soit 12 octets.
    Mon buffer est du type int8 et contient 12 elements.

    Le but est d'ecrire le minimum de code, pour des raisons de place.
    Je pensait qu'il etait possible de la faire a l'aide de pointeur??

    Je suis un peu novice dans ce domaine

    Merci

  4. #4
    Membre éprouvé Avatar de Blowih
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 122
    Par défaut
    peu etre avec un stream
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    std::istringstream iss; // dans lequel tu stoske ton buffer(, je ne me rapelle pas la syntaxe)
    iss >> structure.item1 >> structure.item2 >> ... ;

  5. #5
    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
    Par défaut
    Si tu es certain que les octets de ton buffer correspondent aux octets de ta structure sans aucune manipulation ou conversion, alors tu peux faire une copie barbare :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    structure = *reinterpret_cast<structure_type*>(buffer);
     
    // Ou
     
    memcpy(&structure, buffer, sizeof(structure));
    Mais bon, rien que pour des raisons d'alignement, je ne suis pas certain que cela marchera. Le mieux serait tout de même de traiter individuellement chaque champ de ta structure.

  6. #6
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 84
    Par défaut
    Merci,

    Pour info je n'ai pas acces au stream, donc en effet je cherchais une version barbare.

    Loulou24,

    Je suis sur que mes données sont alignées dans mon buffer sur les données dans ma structure.
    Je vais essayer.

  7. #7
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 84
    Par défaut
    Merci, cela fonctionne

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 21/12/2005, 16h44
  2. Enlver un noeud dans une structure XML
    Par Sharingan dans le forum ASP
    Réponses: 4
    Dernier message: 20/12/2004, 08h08
  3. donée de plusieur vecteur dans une structure ??
    Par lipczynski dans le forum C++
    Réponses: 5
    Dernier message: 13/08/2004, 08h17
  4. type void* dans une structure
    Par barbapapaz dans le forum C
    Réponses: 3
    Dernier message: 16/07/2004, 16h11
  5. copie d'un enregistrement dans une deuxième table
    Par developpeur_mehdi dans le forum Bases de données
    Réponses: 5
    Dernier message: 03/03/2004, 12h51

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