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 :

Fonction d'échappement


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 50
    Par défaut Fonction d'échappement
    Pour un projet utilisant SQLite, j'utilise des char * pouvant contenir des apostrophes. Je souhaiterai doubler celles ci mais je ne vois pas comment faire.

    THx !

  2. #2
    Membre chevronné
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Par défaut
    Salut,

    A mon avis le forum "C" est peut etre plus approprié, vu que tu manipules des char* (et que les char*, c'est mal ), mais je dirais (première idée qui me vient à l'esprit) :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    (codé à la volée, donc qui ne compile probablement pas)
     
    // chaine de départ
    char chaine[] = "c'est d'accord";
    int len = strlen(chaine);
     
    // compter les apostrophes
    int nbApostrophes=0;
    for (int i=0; i<len; ++i)
     if (chaine[i]=='\'')
       ++nbApostrophes;
     
    // allouer une nouvelle chaine de la bonne taille
    char* pNouvelle = new char[len+nbApostrophes+1];
     
    // la remplir
    int j=0;
    for (int i=0; i<len+nbApostrophes; ++i)
    {
       // recopier la lettre
       pNouvelle[j] = chaine[i];
       ++j;
     
       // si c'est un papostrophe, la doubler
       if (chaine[i]=='\'')
       {
          pNouvelle[j] = '\'';
          ++j;
       }
    }
     
    pNouvelle[j] = 0;
    Mais c'est peut etre pas la meilleure solution ..
    Tu pourrais peut etre créer un std::string avec ta chaine en char*, et utiliser un foncteur qui convient pour insérer une apostrophe après chaque apostrophe existante....

    Enfi voilà

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 50
    Par défaut
    Merci, je vais essayer de voir avec la deuxième méthode.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Fonction d'échappement MySQL
    Par ADIDASman dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 25/04/2007, 23h30
  3. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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