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

Discussion :

Une QString bizarre

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Par défaut Une QString bizarre
    Bonjour à tous !

    C’est la fête, j’enchaîne !

    Je cherche à repérer une chaîne. Voici le code :


    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
    #include <QString>
    #include <QTextStream>
    #include <QRegExp>
    #include <QTextCodec>
     
    QString remplace (QString aRemplacer, QString remplacerPar, QString texte)
    {
        QTextStream cout(stdout, QIODevice::WriteOnly);
        QRegExp regex (aRemplacer);
        if(texte.contains(regex)) {
            texte = texte.replace(aRemplacer, remplacerPar);
            cout << aRemplacer << " trouve ! " << texte << "\n";
        }
        return texte;
    }
     
    int main () {
        QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
        QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
        QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
        QTextStream cout(stdout, QIODevice::WriteOnly);
     
        QString t;
        t = remplace("\\did", "TTT", "Il dit \\did{haut} à");
        cout << t;
    }
    Ce code fonctionne dans la majeure partie des cas, mais si je mets ce que j’ai mis là, à savoir \\did, ça veut pas, il ne "trouve" pas. \\oe, oui, \\yt, oui, mais \\did, non ! et \\il non plus !
    Alors je ne comprends pas du tout pourquoi certaines chaînes sont refusées, et d’autres pas.
    Merci d’avance pour votre aide !

  2. #2
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    L'antislash est utilisé pour les séquences d'échappement dans les chaînes en C++. Je suppose que tu souhaites rechercher le caractère antislash lui même, donc il faut effectivement en mettre deux comme tu l'as fait pour obtenir le caractère dans un QString (tout comme pour un std::string). "\\" affiche "\"
    Par contre tu construis ensuite un QRegExp avec cette QString, et les expressions régulières interprètent aussi les antislash, donc il faut les quadrupler pour qu'une QRegExp l'interprète comme le caractère antislash et pas une séquence d'échappement.
    http://qt.developpez.com/doc/4.7/qregexp#details
    Note: The C++ compiler transforms backslashes in strings. To include a \ in a regexp, enter it twice, i.e. \\. To match the backslash character itself, enter it four times, i.e. \\\\.
    ... \d : Matches a digit (QChar::isDigit()).
    Ou alors modifier le comportement de ta QRegExp avec setPatternSyntax.

Discussions similaires

  1. une instanciation bizarre.
    Par specsy dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 10/05/2008, 17h42
  2. Une erreur bizarre
    Par mouaa dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 24/04/2008, 01h45
  3. une panne bizarre
    Par noufel dans le forum Composants
    Réponses: 2
    Dernier message: 28/12/2007, 10h57
  4. j'ai une fonction bizarre..
    Par zmatz dans le forum C++
    Réponses: 7
    Dernier message: 04/05/2007, 16h11
  5. Lot DTS avec une requete bizarre
    Par saby dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/10/2005, 10h26

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