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

C++ Discussion :

Découper un chemin


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Par défaut Découper un chemin
    Bonjour,

    Quelqu'un saurait-il comment découper un chemin de façon à avoir seulement le nom du dossier

    Example:
    X:\InfoP4\JMC\C++Builder\Théorie
    Découper ce chemin de façon à avoir :
    Théorie

    merci d'avance de votre aide

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour
    string::rfind et string::substr sont fait pour ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <string>
    #include <iostream>
    using namespace std;
    int main(){
       string s1 = "X:\\InfoP4\\JMC\\C++Builder\\Théorie";
       string s2 = s1.substr(1+s1.rfind('\\'));
     
       cout << s2 << endl;
       return 0;
    }

  3. #3
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    bonjour

    ici :
    http://www.cplusplus.com/reference/c...ng/strtok.html

    ou ceci mais c'est pas le top du top :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    vector<string> decouper(string chaine, char c){
      int size=chaine.size();
      int r=0;
      vector<string> v;
      for(int i=0; i<size; i++){
        if (chaine[i]==c){
          v.push_back(chaine.substr(r, i-r));
          r=i+1;
        }
      }
      v.push_back(chaine.substr(r, size-r));
      return v;
    }

  4. #4
    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 : 50
    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
    Par défaut
    strtok est à éviter comme la peste pour bien des raisons :
    - Elle n'est pas utilisable en multithread
    - On ne peut pas croiser des appels à 2 strtok différents
    - Elle modifie la chaîne initiale
    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.

  5. #5
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Par défaut
    Merci de votre réponse

    mais j'ai trouvé ceci et ça marche très bien.

    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
    String GetDirectoryName(String Directory)
    {
    	size_t i;
            char *tDirectoryName;
    	i = strlen(Directory.c_str());
     
    	tDirectoryName[0] = '\0';
     
    	while(Directory.c_str()[i-1] != '\\')
    	{
    	   i--;
    	}
     
    	strcpy(tDirectoryName,Directory.c_str() + i);
     
    	return tDirectoryName;
    }

  6. #6
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par slitnex2006 Voir le message
    Merci de votre réponse

    mais j'ai trouvé ceci et ça marche très bien.

    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
    String GetDirectoryName(String Directory)
    {
    	size_t i;
            char *tDirectoryName;
    	i = strlen(Directory.c_str());
     
    	tDirectoryName[0] = '\0';
     
    	while(Directory.c_str()[i-1] != '\\')
    	{
    	   i--;
    	}
     
    	strcpy(tDirectoryName,Directory.c_str() + i);
     
    	return tDirectoryName;
    }
    Attention
    + Le code écrit est du C
    + Il n'y a pas de mémoire allouée pour tDirectoryName
    + Comportement indéfini si Directory ne contient pas le caractère '\\'

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

Discussions similaires

  1. Découper un chemin absolu ou relatif
    Par abysr dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 08/05/2015, 14h53
  2. Réponses: 2
    Dernier message: 19/11/2010, 11h12
  3. Comment subsituer un chemin par un autre dans un réseau ?
    Par Baillard dans le forum Développement
    Réponses: 3
    Dernier message: 11/08/2002, 14h01
  4. [FORMS] Chemin des icones (intégré FAQ 150 QR)
    Par jerome62 dans le forum Forms
    Réponses: 2
    Dernier message: 30/07/2002, 08h32
  5. Algorithme de recherche de chemin
    Par amelie gaya dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 09/06/2002, 15h29

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