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

SL & STL C++ Discussion :

Expressions Régulières et nom de fichiers


Sujet :

SL & STL C++

  1. #1
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Expressions Régulières et nom de fichiers
    Bonjour à toutes et à tous,
    J'ai une chaine de caractères (char* ou std::string, peu importe) et je veux créer un fichier qui porte comme nom cette chaîne. Hélas je ne connais pas à l'avance son contenu, il me faut donc effectuer une vérification sur la validité du nom de fichier (pas de \ / : * ? " < > |). Je pensais donc utiliser les expressions régulières pour remplacer ces caractères systématiquement à ma chaîne initiale, mais est-ce possible et comment ? (j'ai encore BEAUCOUP de mal avec les expression régulières...)

    Merci d'avance à vous

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par Worm00 Voir le message
    Bonjour à toutes et à tous,
    J'ai une chaine de caractères (char* ou std::string, peu importe) et je veux créer un fichier qui porte comme nom cette chaîne. Hélas je ne connais pas à l'avance son contenu, il me faut donc effectuer une vérification sur la validité du nom de fichier (pas de \ / : * ? " < > |). Je pensais donc utiliser les expressions régulières pour remplacer ces caractères systématiquement à ma chaîne initiale, mais est-ce possible et comment ? (j'ai encore BEAUCOUP de mal avec les expression régulières...)

    Merci d'avance à vous
    Si tu fais juste un test vrai/faux, tu risques fort de demander régulièrement à l'utilisateur d'entrer plusieurs fois une chaîne avant d'en accepter une correcte. Pour éviter ça, tu peux tout simplement transformer les caractères dont tu ne veux pas en caractère acceptable (par exemple _) - avec std::transform

    Code C++98 : 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
     
    template <class T>
    struct make_valid_filename_helper
    {
      T operator()(const T& in)
      {
        if (in == '*' || in == '?' || in == ':' || in == '\\' || in == '/' || in == '"')
          return '_';
        return in;
      }
    };
     
    ...
     
    std::string make_valid_filename(const std::string& str)
    {
        std::string out(str);
        std::transform(str.begin(), str.end(), out.begin(), 
          make_valid_filename_helper());
    }

    Une version C++11 pourrait se servir d'une expression lambda (je te laisse cet exercice).

    Si tu souhaites utiliser les expressions rationnelles (pas régulières ; regular expression signifie expression rationnelle ; "regular" est dans ce contexte un faux ami), j'ai écrit un billet sur ce sujet il y a un certain temps.

Discussions similaires

  1. Problème d'expression régulière pour parser un fichier
    Par lionelus dans le forum Bioinformatique
    Réponses: 4
    Dernier message: 12/06/2015, 11h29
  2. Expression régulière et nom de fichier
    Par sheep_one dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 24/01/2015, 12h52
  3. Expression réguliere et nom de fichier
    Par delilou dans le forum Général Java
    Réponses: 4
    Dernier message: 24/03/2011, 09h39
  4. Réponses: 93
    Dernier message: 15/04/2009, 15h34
  5. Expression régulière pour récupérer le nom d'un fichier
    Par calimero2611 dans le forum Langage
    Réponses: 5
    Dernier message: 24/02/2006, 19h00

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