Problème de conversion string en const char *

Problème de conversion string en const char * - C++ - Programmation

Marsh Posté le 23-10-2007 à 13:20:45    

Bonjour,
 
Je débute en C++ sous Visual C++ express et j'essaie d'insérer une entrée dans une base MySQL, voici un extrait du code :

Code :
  1. string toto="mavaleur";
  2. mysql_query(mysql, "INSERT INTO matable VALUES('', '"+toto+"', '421')" );


et lors de la compilation j'ai une belle erreur :

Citation :

error C2664: 'mysql_query' : impossible de convertir le paramètre 2 de 'std::basic_string<_Elem,_Traits,_Ax>' en 'const char *'
        with
        [
            _Elem=char,
            _Traits=std::char_traits,
            _Ax=std::allocator
        ]
        Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé


 
Savez-vous ce qui se passe et comment y palier ? Suffit-il juste de transformer le string toto en const char * ? Et si oui comment ?
 
En comptant sur votre aide, merci d'avance

Reply

Marsh Posté le 23-10-2007 à 13:20:45   

Reply

Marsh Posté le 23-10-2007 à 13:25:59    

doc => std::string::c_str


---------------
Töp of the plöp
Reply

Marsh Posté le 23-10-2007 à 13:45:39    

Merci _darkalt3_,
 
ça commence à venir, j'ai modifié le code avec std::string::c_str et j'obtiens à présent :
 

Code :
  1. string Str="mavaleur";
  2. const char *CstStr2 = Str.c_str ();
  3. mysql_query(mysql, "INSERT INTO matable VALUES('', '"+CstStr2+"', '421')" );


 
Le problème de conversion est résolu mais j'ai en résultat de compilation une autre erreur

Citation :

error C2110: '+' : impossible d'ajouter deux pointeurs


 
Est-il possible en règle général de faire plusieurs concaténation sur la même ligne (comme en php) ou bien doit-on faire une ligne différente à chaque concaténation ? Ou ça vient seulement de mysql_query ?

Reply

Marsh Posté le 23-10-2007 à 13:58:51    

cf strcat, et la doc C relative aux chaines de caractères ...


---------------
Töp of the plöp
Reply

Marsh Posté le 23-10-2007 à 14:13:40    

ouah de l'injection SQL ! le pied !
 
osef de strcat
 
('"' + foo + '"').c_str()

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed