Funktion, um Dateipfade/Namen vernünftig zu sortieren
-
Hallo, ich habe ein Programm geschrieben, mit dem ich alle Dateien in sämtlichen Unterordnern eines bestimmten Pfades auflisten kann. Die Klasse dafür sieht ungefähr so aus:
class datei { public: //zur Veranschaulichung std::string path; //zB.: "C:\\test" std::string name; //zB.: "Neues Textdokument.txt" };Die Dateien lese ich alle in einen vector ein:
std::vector<datei> MeineDateien;Mein Ziel ist es jetzt, die Dateien im vector so anzuordnen, wie sie im "Datei-Baum" des Explorers von oben nach unten angezeigt würden.
Mein erster Ansatz sah so aus:bool pred(const datei& a, const datei& b) { if(a.path==b.path) return a.name<b.name; if(b.path.find(a.path)!=std::string::npos) return false; if(a.path.find(b.path)!=std::string::npos) return false; return true; } //... sort(MeineDateien.begin(), MeineDateien.end(), pred);Das scheint aber nicht richtig zu funktionieren, denn in der sortieren Liste kommen ab und zu solche Einträge zu Stande:
C:\A\B\C Datei 1 C:\A\B\C Datei 2 C:\A\B Datei x //sollte eigentlich weiter oben stehen C:\A\B\C Datei 3Fällt jemand eine bessere Methode ein, die Elemente des vectors zu sortieren? Ich hoffe ihr versteht das Problem

-
bool pred(const datei& a, const datei& b) { if(a.path!=b.path) return a.path<b.path; retirn a.name<b.name; }
-
manchmal kann die Lösung so einfach sein... Danke
