000
13.06.2010, 23:54 Uhr
nasil122002
|
Hallo,
Ich wollte den absoluten datei-pfad in einem Ordner sortiert auslesen(unter Linux). Auslesen die datei-pfaden ist ok aber bei der Sortierung habe ich Probleme.
C++: |
selectedDirectory = fl_dir_chooser ("Select Imagedirectory:",NULL,0); //Das ist nur ein Widget um den Ordner zu zeigen. DIR *d; dirent *de; // char pfad[256]; numberOfFilesOnSelectedFolder= 0; d=opendir(selectedDirectory); //Hier kann man den Ordnerpfad eingeben anstatt selectedDirectory while((de=readdir(d))){ numberOfFilesOnSelectedFolder++; } closedir(d); d= opendir(selectedDirectory); std::vector <std::string> result; char buffer[500]; int n; if (d) { while (true) { de= readdir(d); if (de == NULL) break; n= sprintf (buffer, "%s/%s", selectedDirectory, de->d_name); result.push_back( std::string(buffer)); } closedir(d); std::sort( result.begin(), result.end() ); }
cout << "result 3:" << result.at(0) << endl << result.at(1) << endl << result.at(2) << endl << result.at(3) << endl << result.at(4) << endl << result.at(5) << endl << result.at(6) << endl;
|
Wenn ich diesen Code ausführe und bestimmen will, was die 0., 1., 2., 3. usw. Dateien im Ordner sind, dann bekomme ich folgende Antwort:
result 3:/home/csad6517/Desktop/ViSeCut/Neck2/. /home/csad6517/Desktop/ViSeCut/Neck2/.. /home/csad6517/Desktop/ViSeCut/Neck2/Unbenannt-105.dcm /home/csad6517/Desktop/ViSeCut/Neck2/Unbenannt-106.dcm /home/csad6517/Desktop/ViSeCut/Neck2/Unbenannt-107.dcm /home/csad6517/Desktop/ViSeCut/Neck2/Unbenannt-36.dcm /home/csad6517/Desktop/ViSeCut/Neck2/Unbenannt-37.dcm
Die Datei -105.dcm, -106.dcm, -107.dcm liegen aber im Ordner ganz unten und -36.dcm, -37.dcm ganz oben. Das Programm vergleicht 1 und 3 von 105 und 37, da 1 kleiner als 3 ist gibt es als erstes aus, weiss aber nicht dass 105 dreistellig und 37 zweistellig ist. Was kann man da machen, damit die Reichenfolge stimmt?
Die Dateien im Ordner sehen so aus: www.wopsys.com/bilder/dateien.jpg
Danke im Voraus. |