Array sortieren
-
Hallo Forum,
mit Visual C+ 2008 habe ich ein klenes Programm geschrieben welches mittels Directory::GetFiles Dateien aus einem Ordner in einem Array auflistet.
Die Dateien haben einen Namen mit fortlaufender Nummer z.B. abc1, abc2, usw. .
Im Array werden die Dateien aufgelistet aber auf abc1 folgt abc10 bis abc19 und dann abc2. Wie kann ich das Array sortieren, so daß abc1, abc2, usw. in der richtigen Reihenfolge im array angezeigt wird?
Vielen Dank für Hilfe!MfG
-
Mit StrCmpLogicalW(..).
http://msdn.microsoft.com/en-us/library/bb759947.aspxSimon
Edit:
Beispiel hinzugefügt:#include "stdafx.h" #include "Shlwapi.h" #pragma comment (lib, "Shlwapi.lib") #include <msclr/marshal.h> using namespace msclr::interop; using namespace System; using namespace System::IO; using namespace System::Collections::Generic; int compare(String^ lhs, String^ rhs) { if (nullptr == lhs) { if (nullptr == rhs) { return 0; } else { return -1; } } else { if (nullptr == rhs) { return 1; } else { marshal_context ctx; return StrCmpLogicalW(ctx.marshal_as<LPCWSTR>(lhs), ctx.marshal_as<LPCWSTR>(rhs)); } } } int main(array<System::String ^> ^args) { array<String^>^ files = Directory::GetFiles(L"D:\\Temp\\Test"); Array::Sort(files, gcnew Comparison<String^>(&compare)); return 0; }
-
Hi theta,
Vielen Dank für Deine Antwort!
Ich werd's mal ausprobieren.
MfG