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

Langage C++ Discussion :

Conversion string en unsigned char *


Sujet :

Langage C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 31
    Points
    31
    Par défaut Conversion string en unsigned char *
    Bonjour
    je suis débutant en c++
    J'ai le code suivant:
    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
     
    #include "stdafx.h"
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <afxdb.h>
    #include <afx.h>
    #include <time.h>
    #include <string.h>
    #include "efistst.h"
     
     
    int _tmain(int argc, _TCHAR* argv[])
    {
     
    handle = efisOpenDevice("192.168.1.3", 5000);
     
    }
    Ce code affiche l'error suivante:

    Erreur 1 error C2664: 'efisOpenDevice'*: impossible de convertir le paramètre 1 de 'const char [12]' en 'unsigned char *'

    Ma question: Comment on peut convertir const char [12]' en unsigned char *?

    Merci...

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 126
    Points : 149
    Points
    149
    Par défaut
    Je te conseille ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string chaine("192.168.1.3");
    char* pChaine = chaine.c_str();
    unsigned char *upChaine = reinterpret_cast<unsigned char*>(pChaine);
    Cordialement,
    A.

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Marche pas pour autant, c_str() retourne un pointeur const.

    C'est la fonction efisOpenDevice() qui soit est mal déclarée, soit modifie la chaîne passée en paramètre: Elle exige un pointeur non-const.

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour et bienvenu,
    Convertir le 'const char [12]' en 'unsigned char *' a de grande chance d'être une erreur. Pourquoi : const indique que la chaîne ne peut être modifiée. Et ce const est perdu dans le unsigned char. Donc forcer la conversion de const vers non const c'est probablement amené à écrire quelque part où on t'en n'a pas donné l'autorisation. Le comportement résultant a de grande chance d'être ensuite non déterminé.

    Je soupçonne que ce soit la fonction efisOpenDevice qui a mal définie ses arguments. Si cette fonction ne modifie pas son premier paramètre, elle devrait elle aussi le prendre en const :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HANDLE efisOpenDevice(char const *sz_adresse_, int port_);

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Essaie ceci:
    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
    #include "stdafx.h"
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <afxdb.h>
    #include <afx.h>
    #include <time.h>
    #include <string.h>
    #include "efistst.h"
     
    int _tmain(int argc, _TCHAR* argv[])
    {
    	unsigned char chaine[] = "192.168.1.3";
    	handle = efisOpenDevice(chaine, 5000);
    }

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/11/2012, 15h27
  2. convertir string en unsigned char
    Par boboss123 dans le forum C
    Réponses: 5
    Dernier message: 01/12/2011, 20h54
  3. Réponses: 4
    Dernier message: 28/01/2010, 11h28
  4. Réponses: 2
    Dernier message: 03/04/2009, 17h46
  5. Conversion String en hexa char special
    Par Jahz dans le forum Langage
    Réponses: 1
    Dernier message: 03/08/2007, 15h52

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