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
    Futur Membre du Club
    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
    Points : 8
    Points
    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 sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    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 189
    Points : 17 141
    Points
    17 141
    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*".
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre éprouvé

    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
    Points : 1 086
    Points
    1 086
    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
    Futur Membre du Club
    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
    Points : 8
    Points
    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