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++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    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 averti
    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
    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 Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    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 averti
    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
    Par défaut
    yep cool ça à l'air de fonctionner.

    thx bonne soirée.

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

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    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;
    }
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

+ 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