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

Boost C++ Discussion :

Boost::Regex et '\d' sous Windows


Sujet :

Boost C++

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 545
    Points
    545
    Par défaut Boost::Regex et '\d' sous Windows
    Voila, j'ai un petit souci. Lorsque dans une regex j'utilise un \d sous Windows, il faut automatiquement le proteger par un \\d (un peu le meme pb qu'avec les PATHs).
    Evidemment, comme je veux faire du code portable, ca marche plus sous Linux.
    Comment faire pour avoir une string qui accepte le \d sous Windows au lieu de [[:digit:]] ?

    Merci pour vos eclaircissements.

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Je ne vois pas trop où est le problème de compatibilité. Si tu veux avoir un "\" dans une chaîne de caractères en C++, quel que soit l'environnement, tu dois mettre "\\". Peux-tu préciser ta situation ?
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 545
    Points
    545
    Par défaut
    Oui, en fait c'est juste dans la regex :

    boost::regex("(.*)\d\s(\w)+")

    par exemple.

    Sous Windows, je suis oblige d'ecrire :
    boost::regex("(.*)\\d\\s(\\w)+")

    Alors que sous Linux il suffit de faire :
    boost::regex("(.*)\d\s(\w)+") mais tu as raison, peut etre que Linux accepte aussi : boost::regex("(.*)\\d\\s(\\w)+")

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    En C ou en C++, dans une chaine de caractères, si tu dois employer le caractère \ en tant que caractère \, tu dois le doubler. C'est valable sous Microsoft, Linux, HP-UX et tous les OS de la terre.

    Maintenant, si ce \ n'est pas doublé, c'est une escape séquence du C (ou C++) genre \n ou \t.

    La liste des escape séquence reconnues est ici : http://msdn.microsoft.com/en-us/libr...bw(VS.80).aspx

    Si cette escape séquence n'est pas reconnue en tant que escape séquence de chaine de caractères du C, il peut y avoir plusieurs comportement du compilateur (je ne sais pas ce que dit la norme).
    • On ignore l'escape séquence et cela tombe bien pour toi, cela fait exactement ce que tu veux.
    • On supprime l'escape séquence parce qu'elle n'est pas valide

    Ce qui dit le compilateur Microsoft :
    Microsoft Specific

    If a backslash precedes a character that does not appear in the table, the compiler handles the undefined character as the character itself. For example, \c is treated as an c.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Si cette escape séquence n'est pas reconnue en tant que escape séquence de chaine de caractères du C, il peut y avoir plusieurs comportement du compilateur (je ne sais pas ce que dit la norme).
    Comportement indefini.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Comportement indefini.
    Bon comme cela, c'est clair !!
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Membre confirmé

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 545
    Points
    545
    Par défaut
    Merci pour toutes vos reponses claires !

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

Discussions similaires

  1. Boost thread et stack size sous windows
    Par atapi dans le forum Boost
    Réponses: 2
    Dernier message: 18/02/2012, 09h18
  2. Réponses: 0
    Dernier message: 26/03/2011, 16h47
  3. Compiler un programme Boost sous Windows avec Cygwin
    Par asher256 dans le forum Boost
    Réponses: 3
    Dernier message: 20/11/2008, 21h07
  4. installer boost sous windows
    Par bigboomshakala dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 16/12/2004, 15h59

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