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 :

Instantiation de String


Sujet :

C++

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2011
    Messages : 247
    Points : 163
    Points
    163
    Par défaut Instantiation de String
    Bonjour,

    Alors j'ai un problème avec les strings, et avec le passage de tableaux de pointeurs en paramètres d'une fonction à un autre. Hier encore, j'avais le code suivant, et ça marchait correctement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	string sources[8][3] = {
    		{"ab", "cd","ef"},
    		{"gh", "ij","kl"},
                    (...)
    	};
    Je veux passer le tableau sources en paramètre à une autre fonction dont le prototype m'est imposé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    size_t parse_data(char *ptr, size_t size, size_t nmemb, char *userdata){
    Donc la variable doit être userdata, que je vais ensuite caster en tableau de tableaux de String. J'ai donc décidé d'avoir recours à des pointeurs (un string**), mais je n'arrive pas à faire mieux que ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            string** sources;
    	sources = new string*[8];
    	sources[0] = new string[3];
    	sources[0][0] = new string("ab");
    Y a-t-il un moyen de faire ça plus proprement et en moins de lignes?

    Merci d'avance.

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Hello

    userdata est un char*, tu ne peux pas lui passer un tableau de tableau de string, ça n'a aucun sens ! En plus, ce char* n'est même pas const, tu ne peux donc pas lui passer proprement le retour du membre c_str() de la classe std::string. Changer la manière d'instancier les chaînes n'y changera rien

    Maintenant, si tu souhaites vraiment y aller à la sale pour bypasser la contrainte imposée par la signature, c'est possible, mais tu n'as pas besoin non plus de changer la manière d'instancier. Il suffit de caster un pointeur vers ton tableau vers un char* et de recaster dans l'autre sens ensuite. C'est pas du bon boulot mais c'est possible
    Find me on github

Discussions similaires

  1. PDO : Language string failed to load: instantiate
    Par laurentSc dans le forum Langage
    Réponses: 17
    Dernier message: 16/11/2013, 13h38
  2. Beans.instantiate(ClassLoader cls, String beanName)
    Par adrien1 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 24/05/2009, 15h31
  3. URGENT: retour de string
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 15/07/2002, 09h47
  4. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 15h23

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