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 :

Probleme de string vers char* avec Sqlite


Sujet :

C++

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 8
    Par défaut Probleme de string vers char* avec Sqlite
    Salut à tous,

    Je voulais rapidement intégrer Sqlite dans mon projet en copiant vite fait un tout petit wrapper c++ trouvé sur le net. Ca fonctionne mais j'ai un warning concernant la conversion de string vers char* qui est dépréciée. Regardez plutôt:

    Dans ma classe Database qui fait office de wrapper, le constructeur appelle la fonction open, qui elle-même appelle les fonction de base de Sqlite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    bool Database::open(char* filename)
    {
    	if(sqlite3_open(filename, &database) == SQLITE_OK)
    		return true;
     
    	return false;
    }
    Dans mon main, j'ouvre une base de donnée de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Database *db;
    db = new Database("ma_base.sqlite");
    Le warning a lieu lors de cette dernière ligne.

    "Conversion from string literal ton char* is deprecated".

    Mon premier réflexe a été de mettre des const un peu partout pour lui faire plaisir, mais là c'est la fonction d'origine de Sqlite qui se plaint: il veut des char* comme arguments et rien d'autre.

    Je n'ai pas un très bon niveau en C++ donc ce problème me dépasse un peu. Si quelqu'un pouvait m'indiquer la voie à suivre, je lui en serais très reconnaissant!

  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
    utilise plutot la signature bool Database::open(const char* filename)char* désigne une chaine modifiable or "ma_base.sqlite" ne l'est pas.

    open(char* filename) annonce que tu peux modifier le contenu pointé par filename.

    ce warning signifie quasiment toujours "Eh!! T'as oublié un const devant un char*".

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    Et pour faire plaisir à Sqlite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sqlite3_open((char*)filename, &database)
    //ou
    sqlite3_open(const_cast<char*>(filename), &database)

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 8
    Par défaut
    Merci!

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

Discussions similaires

  1. C++ Builder XE3 Conversion String vers Char *
    Par kurul1 dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/04/2013, 09h27
  2. [Débutant] Conversion string vers char
    Par sachaaaz dans le forum C#
    Réponses: 6
    Dernier message: 12/03/2012, 11h42
  3. Probleme d'exportation vers excel avec report 10G
    Par jedos dans le forum Reports
    Réponses: 0
    Dernier message: 19/05/2009, 20h58
  4. Conversion String vers char
    Par benwit dans le forum Langage
    Réponses: 27
    Dernier message: 30/03/2007, 14h01
  5. Borland + sqlite (aducom) + string > 256 char = pas conte
    Par spyroux dans le forum C++Builder
    Réponses: 1
    Dernier message: 16/12/2005, 22h48

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