Möglichkeit aus einem Pfad den Dateinamen zu extrahieren ?



  • Hallo,

    Gibt es eine Möglichkeit aus einem Pfad den Dateinamen zu extrahieren ???

    Beispiel :

    Pfad:
    C:\Windows\system32\KBdll.dll

    Extrahiert : (Das soll übrig bleiben)
    KBdll.dll

    Hat jemand ne' Idee ?

    Danke
    Elite-Programmer



  • rechten \ suchen und dann die rechten Zeichen bis zur SuchPOS rausholen.

    Siehe CString find, mid, left



  • yupp, SUBSTRING heißt das zauberwort! eine suche danach in der class lib. solle helfen! mehr weiß ich leider zu C++ dazu acuh nicht! 🙂



  • Unter Windows ist _splitpath() wohl immer noch die einfachste Möglichkeit. Plattformübergreifend sollte dir boost::filesystem weiterhelfen.

    mfg JJ



  • Danke Leute, ich werde alles mal ausprobieren !



  • Hallo,

    ich habe mir alles mal in der MSDN angeschaut, doch das Problem ist das ich den Pfad nicht kenne. Das heißt der Pfad ist immer anders ! Somit kann ich CString::Find , mid, right etc. nicht benutzen inkl. _splitpath() !
    Gibt es eine andere Möglichkeit ?

    Danke



  • natürlich, ist doch egal ob du den pfad kennst oder nicht!
    der pafd ist immer ein string und den kann man auslesen!
    du nimmst einfach den string, suchst von rechts das erste "\" und der substring vom "\" bis zum ende ist dann die datei... wo ist das problem?



  • Wenn ich wüsste wie man den Pfad (String) von rechts nach links durchsucht...dann wäre es kein problem ! Wie kann ich das machen ? Mit
    einer For-Schleife funktioniert das nicht.

    Danke



  • wenn du in der MSDN warst, warst du ja schon ganz nah dran.
    unter
    CString -> class members -> Abschnitt: Searching:
    ReverseFind - Finds a character inside a larger string; starts from the end.

    mfg Emperor_L0ser



  • Wenn du mehr als einen Buchstaben rückwärts finden willst geht das so:

    int ReverseFind(CString in_string,CString search)
    {
     in_string.MakeReverse();
     search.MakeReverse();
     int r = in_string.Find(search);
     r = r + search.GetLength()- 1;
     r = in_string.GetLength()-1-r;
     return r;
    }
    


  • Danke, jetzt klappts !


Log in to reply