CStrings ordnen



  • Hallo NG!

    Ich habe eine Liste von CStrings, in denen sich die Pfadangaben zu Bildern befinden. Diese sind aber nicht geordnet. Wie kann ich die Dateien ordnen, bzw. gleiche Stringteile von sich unterscheidenden trennen?

    Beispiel:

    string1 = "C:/blabla/Bild 001.jpg"
    string2 = "C:/blabla/Bild 003.jpg"
    string3 = "C:/blabla/Bild 002.jpg"
    

    Nun suche ich nach einer Möglichkeit, die Pfade neu zu ordnen, abhängig von dem sich ändernden Parameter in dem Dateinamen, also

    string 1 --- string 3 --- string 2
    

    Das ganze wollte ich so flexibel wie möglich gestalten, denn es kann ja auch vorkommen, dass die Dateinamen folgendermaßen bezeichnet werden:

    "00001 Urlaub.jpg"
    "00003 Urlaub.jpg"
    "00002 Urlaub.jpg"
    

    Das einzige, wovon ich sicher ausgehen kann, ist, dass im Dateinamen Zahlen vorhanden sind, die iterativ verlaufen. Wo und in welcher Reihenfolge die auftreten, weiß ich allerdings nicht.

    Kann mir jemand helfen? Möglichst mit Beispiel?

    PS: ich hab hier im Forum gesucht und mich elend durch MSDN gewühlt .. aber zu meiner Lösung habe ich nur gefunden, wie man den Dateinamen vom Pfad trennt .. und eben die Extension herausfiltern kann ... wirklich weitergeholfen hat mir das leider nicht ...



  • Pfad und Dateinamen würde ich auf jeden Fall trennen. Dann als erstes nach Pfad sortieren, dann die jeweiligen Bilder im Pfad sortieren.

    wenn sich die Dateinamen immer unterscheiden, musst du halt Zeichen für Zeichen im Dateinamen durchgehen und schauen ob es eine Zahl ist



  • Nun ja Möglichkeiten gibt´s da schon ´ne Haufen. Gut ist auf jedenfall schon mal Pfad und Dateinamen zu trennen. Wenn´s dann strings sein sollen, solltest Du das Ganze dann, als MFC Programmierer, in ein CStringArray packen und in diesem mittels Vergleichsverfahren [CString].compare() (schau mal z.B. unter C++ Bubblesort bei Tante Google) sortieren. Über das Array kannst Du dann auch mit ´ner Schleife relativ einfach die einzelnen Strings manipulieren.
    Ist bloß ein bißchen (relativ) langsam und häßlich 😃

    Ein bißchen eleganter geht´s aber wenn Du Dich mit den C++ Standardbiblithoken auskennst. Da würde ich dir dann <vector> + <string> in Verbindung mit sort() oder sort_stable() und replace() empfehlen 👍


Anmelden zum Antworten