Ok, vor allem möchte ich nicht Boost oder irgendwelche externen Bibliotheken verwenden. Ich möchte nur die C++ Standardbibliothek verwenden. Ich kann meine Strings mit einem bestimmten Begrenzer mit split()
Funktion leicht aufgeteilt:C++ - Filename und Dateierweiterung teilen
void split(std::string &string, std::vector<std::string> &tokens, const char &delim) {
std::string ea;
std::stringstream stream(string);
while(getline(stream, ea, delim))
tokens.push_back(ea);
}
Ich tue dies auf Dateinamen. Aber es gibt ein Problem. Es gibt Dateien, die Erweiterungen wie haben: tar.gz
, tar.bz2
, etc. Außerdem gibt es einige Dateinamen, die zusätzliche Punkte haben. Some.file.name.tar.gz
. Ich möchte trennen und tar.gz
Hinweis: Die Anzahl der Punkte in einem Dateinamen ist nicht konstant.
Ich versuchte auch PathFindExtension
aber kein Glück. Ist das möglich? Wenn ja, bitte erleuchte mich. Vielen Dank.
Edit: Es tut mir leid, das Betriebssystem nicht anzugeben. Es ist Windows.
Sie wollen nur die C++ Standard Library verwenden, so dass Sie die OS-spezifische Funktion versuchen 'PathFindExtension' ... –