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

Langage C++ Discussion :

replace apostrophe probleme


Sujet :

Langage C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 27
    Points : 16
    Points
    16
    Par défaut replace apostrophe probleme
    rebonjour ! je vois que vous vous ennuyez ^^, donc je repost.
    Plus sérieusement, je continu toujours mon programme (voir post précédent) et j'essaye de remplacer les apostrophes par des - ou un espace n'importe, j'ai essayé maintes façons mais rien ne marche : /

    dernière en date : rest.replace(rest,"'","-");
    rest étant le string à traiter.
    mais la il me renvoi 50 erreurs uniquement pour cette ligne Oo

    J'ai goggeliser le problème et essayer pas mal de méthodes mais rien n'y fait.

    si qqn a une idée je suis preneur !

  2. #2
    Membre émérite

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Points : 2 252
    Points
    2 252
    Par défaut
    Citation Envoyé par le_fif Voir le message
    j'essaye de remplacer les apostrophes par des - ou un espace n'importe, j'ai essayé maintes façons mais rien ne marche : /

    si qqn a une idée je suis preneur !
    Une boucle for ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    genre ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    string str;
     
    for (int i = 0,i < sizeof(str),i++)
    {
    if (str[i]=="'")
    {
    str.replace(i,1,"-")
    }
    }

  4. #4
    Membre émérite

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Points : 2 252
    Points
    2 252
    Par défaut
    C'est l'idée.
    Ceci-dit, pour remplacer des caractères, il est plus simple d'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    string str;
     
    for (int i = 0 ; i < str.size() ; i++)
    {
       if (str[i] == '\'')  
       {
          str[i] = '-';
       }
    }
    ps : attention sizeof(str) renvoie la taille d'une instance de la classe string qui vaut approximativement la taille d'un pointeur de type char* (quelques octets). Si tu veux la taille réelle de la chaine pointée alors il faut appeler la fonction membre size().

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    yep cool ça à l'air de fonctionner.

    thx bonne soirée.

  6. #6
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 627
    Points : 30 692
    Points
    30 692
    Par défaut
    Salut,

    Il existe une fonction fournie par le standard qui est très sympa et qui peut te faciliter la vie: replace_if.

    Cette fonction, est fournie par le fichier <algorithm> dans l'espace de noms std.

    La seule chose, c'est qu'elle nécessite la mise en place d'un foncteur (qui est en réalité ici un prédicat), proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct isApostrophe
    {
        bool operator()(char c)
        {
            return c=='\'';
        }
    };
    puis, il "suffit" d'un code proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <iostream> //pour l'affichage
    #include <string> //pour la std::string
    #include <algorithm> //pour replace_if
     
    int main()
    {
        std::string str("salut' bonjour' aurevoir'");
        std::replace_if(str.begin(), str.end(), isApostrophe(), '_');
        std::cout<< str;
        return 0;
    }
    Tu pourrais même envisager grace aux template de permettre la comparaison avec n'importe quel caractère, sous une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    template<char a>
    struct charCompare
    {
        bool operator()(char c)
        {
            return a==c;
        }
    };
    et qui pourrait être utilisé sous une forme proche de
    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
    #include <iostream> //pour l'affichage
    #include <string> //pour la std::string
    #include <algorithm> //pour replace_if
     
    int main()
    {
        std::string str("salut' bonjour' aurevoir'");
        /* remplacons les apostrophe par un underscore */
        std::replace_if(str.begin(), str.end(), charComare<'\''>(), '_');
        std::cout<< str;
        /* et maintenant tous les o en u */
        std::replace_if(str.begin(),str.end(),charCompare<'o'>(),'u');
        std::cout<<str;
        return 0;
    }

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

Discussions similaires

  1. [MySQL] probleme d'apostrophes
    Par kap dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 15/11/2005, 17h59
  2. Probleme avec un lien qui contien un apostrophe
    Par pierrot10 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 23/10/2005, 14h16
  3. Probleme avec replace() et une "Cote"
    Par Yannis06 dans le forum Oracle
    Réponses: 3
    Dernier message: 11/10/2005, 11h48
  4. Réponses: 11
    Dernier message: 12/04/2005, 14h08
  5. Pb apostrophes et replace access2000
    Par xycoco dans le forum Access
    Réponses: 8
    Dernier message: 06/10/2004, 15h11

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