W
2moR schrieb:
Gibts nicht vielleicht irgendeine funktion, die das automatisch für mich erledigt?
Nein (wie schon erwähnt), aber die STL ist wie ein Baukasten, aus dem man sich mit wenigen Bausteienen das passende zusammenstellen kann.
In Deinem Fall sähe das vielleicht so aus:
#include <algorithm>
#include <iostream>
#include <string>
// -- 'a' < 'b', falls die Dateiendung von 'a' < Dateiendung von 'b'
bool suffixCompare( const std::string& a, const std::string& b )
{
const char DOT = '.';
return std::lexicographical_compare(
std::find( a.rbegin(), a.rend(), DOT ).base(), a.end(),
std::find( b.rbegin(), b.rend(), DOT ).base(), b.end() );
}
// -- Anwendung
int main()
{
using std::cout;
using std::endl;
std::string files[] =
{
"C:/pfad1/data/beispiel.txt",
"musik.ini",
"malen.xml",
"bilder.ini"
};
std::sort( files, files + sizeof(files)/sizeof(*files), &suffixCompare );
// -- Sortiertes ausgeben
std::copy( files, files + sizeof(files)/sizeof(*files), std::ostream_iterator< std::string >( cout, "\n" ) );
cout << endl;
return 0;
}
Gruß
Werner