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 :

Connaître le dossier parent d'un fichier/dossier


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 141
    Points : 58
    Points
    58
    Par défaut Connaître le dossier parent d'un fichier/dossier
    Bonjour, tout est dans le titre.

    Je souhaiterais, à partir d'un path, obtenir le path vers le répertoire parent.

    Comment peut-on faire ça?

    Merci

  2. #2
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    Bonjour,

    ben si t as le path absolu de ton fichier dans ton path t as bien le repertoire contenant ton fichier ?

    J ai bon la
    "vaste programme"

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 141
    Points : 58
    Points
    58
    Par défaut
    Exact Exact, mais si j'ai pas envie de parser le path?

    Ou alors, comment le parser efficacement?

  4. #4
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    et en utilisant le rep parent ".." ?
    par contre sur windows je sais pas si ca tourne ?
    "vaste programme"

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 141
    Points : 58
    Points
    58
    Par défaut
    Le but du jeu est bien justement de le faire tourner sous windows

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 troubleshooting Voir le message
    Exact Exact, mais si j'ai pas envie de parser le path?

    Ou alors, comment le parser efficacement?
    Tu peux toujours utiliser la librairie boost correspondante (ma mémoire me fait défaut, et ma fainéantise habituelle me dit de ne pas aller chercher sur boost.org, mais tu peux toujours y faire un tour).
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  7. #7
    Scorpi0
    Invité(e)
    Par défaut
    Boost::Spirit de mémoire.

  8. #8
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    En supposant que tu es sous un système linux (a adpater si tu est sous win):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include <iostream>
    #include <string>
     
    int main() 
    {
        std::string s("/usr/include/c++/iostream");
     
        s.erase(s.find_last_of("/")/* +1 (1)*/,s.size()-1);
        std::cout<<s<<std::endl;
        return 0;
    //(1) : dépend  de si tu veux garder le dernier / ou pas.
    }
    Edit: boost::spirit c'est pour parser des langages, c'est dans la même veine que lex et yacc. Rien à voir avec ce qui est demandé. Et meme, sortir un parseur pour ca, c'est tuer une mouche avec une bombe A.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 141
    Points : 58
    Points
    58
    Par défaut
    Merci, ça a l'air d'être ce que je cherche, histoire de faire mon relou, je vais abuser un peu :
    je fais comment si en entrée et en sortie j'ai un LPTSTR ?

  10. #10
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Euh faut pas pousser. Je veux bien admettre que find_last_of n'est pas une fonction qu'on utilise tout les jours, mais google existe merde !

    LPTSTR <-> std::string, c'est compliqué à taper dans google ?

    (Message sec, mais c'est pour ton bien )
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 141
    Points : 58
    Points
    58
    Par défaut
    Tu as entièrement raison, c'est pour mon bien

    J'ai l'habitude de coder sous linux alors là pour une fois je suis plutot pommé avec les LPTSTR et compagnie...

  12. #12
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Citation Envoyé par troubleshooting Voir le message
    Tu as entièrement raison, c'est pour mon bien

    J'ai l'habitude de coder sous linux alors là pour une fois je suis plutot pommé avec les LPTSTR et compagnie...
    je suis full linuxien, je ne peut donc pas trop aider sur ce point.
    Mais de mémoire, LPTSTR, c'est juste un typedef sur un char* ?
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 141
    Points : 58
    Points
    58
    Par défaut
    Quelque chose comme ça il me semble oui

  14. #14
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    LPTSTR c'est ou bien un char* ou un wchar_t* selon que UNICODE est défini ou non...

    Il il ya une fonction Win32 qui permet de séparer le path en file-name et chemin....
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  15. #15
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 Davidbrcz Voir le message
    Edit: boost::spirit c'est pour parser des langages, c'est dans la même veine que lex et yacc. Rien à voir avec ce qui est demandé. Et meme, sortir un parseur pour ca, c'est tuer une mouche avec une bombe A.
    En fait, je pensais à boost.filesystem à la base, et à sa classe path

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    path my_path("ab/cd/ef/gh/file.txt");
    std::vector<string> dirs;
    std::copy(my_path.begin(), my_path.end(), std::back_inserter(dirs));
    A la sortie, dirs contient:
    "ab"
    "cb"
    "ef"
    "gh"
    "file.txt"

    La classe path contient bien d'autre goodies.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

Discussions similaires

  1. Réponses: 5
    Dernier message: 07/07/2014, 14h46
  2. Réponses: 0
    Dernier message: 17/02/2014, 10h28
  3. Accès fichier dossier parent
    Par mag44 dans le forum Administration système
    Réponses: 2
    Dernier message: 10/09/2013, 13h50
  4. Dossier parent d'un fichier
    Par frizou11 dans le forum C
    Réponses: 5
    Dernier message: 24/07/2007, 10h56
  5. effacer un fichier dans un dossier parent
    Par pierrot10 dans le forum Langage
    Réponses: 1
    Dernier message: 13/06/2007, 22h28

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