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 :

std::vector<std::string> to (void*)


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 23
    Par défaut std::vector<std::string> to (void*)
    bonsoir , j'ai des valeurs enregistrer dans un vecteur
    std::vector<std::string>
    et j'ai besoin de les mètres dans un buffer de type
    void*
    j'arrive pas a faire cette étape.
    merci d'avance.

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    un "void*", c'est un monstre C, qui signifie "une adresse, mais sans type sous-jacent". Il est toujours sous-entendu: "Il va falloir une conversion bien sale pour en faire quelque chose".

    Tout dépend donc de ce que ce void* est précisément.
    Ca dépend de la fonction qui l'utilise.

  3. #3
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Pour passer un std::vector<std::string> en void* il te faut vérifier déjà la porter de ton std::vector, ceci va définir si tu l'alloues sur le stack ou la pile ( new/delete ou pas)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void foo2(void* vector)
    {
        std::vector<std::string>* myVector = (std::vector<std::string>*)vector;
    }
    void foo()
    {
        std::vector<std::string> myVector;
        foo2((void*)&myVector);
    }
    Mais après il faut bien comprendre que le void* tu l'utilises dans des cas très précis... Est-ce ton cas ici?

  4. #4
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    L'important dans ton cas c'est de savoir comment est utilisé ton void* après... Est-ce un tableau de chaine de caractère fini pas un '\0'? ce qui en a l'air...
    Que sais tu exactement de ce que va faire ta fonction avec ton void* ensuite?

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 23
    Par défaut
    je suis entrains de créer un dll pour un système d'automatisation , donc pour faire les test nécessaire pour assurer le bon fonctionnement je doit communiquer avec le Workflow donc j'ai besoin d'envoyer un buffer au Workflow avec le ZMQ et pour faire ça mon buffer doit être de type (const void*) or que les donné que je veux envoyer sont de type (std::vector<std::string>) .

    zmq_send(void *s, const void *buf, size_t len, int flags);

  6. #6
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Ce que je comprends au vu de la signature de ta fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zmq_send(void *s, const void *buf, size_t len, int flags);
    Buf est une chaine de caractère, len est la taille de ta chaine... Donc tu n'envois pas un std::vector<std::string> mais plutôt un std::string::c_str().
    Lie la documentation de ta fonction... (http://api.zeromq.org/3-3:zmq-send) il y a même des exemples sur cette page trouvé en 2 secondes sur google.

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 29/09/2014, 17h12
  2. Cast d'un std::vector<T> -> std::vector<X>
    Par Dono_S dans le forum Langage
    Réponses: 3
    Dernier message: 09/04/2012, 21h31
  3. std::list ou std::vector comme argument de template
    Par epsilon68 dans le forum C++
    Réponses: 11
    Dernier message: 01/03/2011, 23h34
  4. [Tuto] Recherche de tutoriel sur std::list et std::vector
    Par pegase06 dans le forum SL & STL
    Réponses: 27
    Dernier message: 24/07/2007, 16h23
  5. std::sort() sur std::vector()
    Par tut dans le forum SL & STL
    Réponses: 20
    Dernier message: 05/01/2005, 19h15

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