Namespaces
Variants

std::filesystem::path:: extension

From cppreference.net
path extension ( ) const ;
(seit C++17)

Gibt die Erweiterung der Dateinamenkomponente der generisch formatierten Ansicht von * this zurück.

Wenn die filename() -Komponente des Pfades im generischen Format einen Punkt ( . ) enthält und nicht eines der speziellen Dateisystemelemente dot oder dot-dot ist, dann ist die Erweiterung die Teilzeichenkette, die beim rechtesten Punkt beginnt (einschließlich des Punktes) und bis zum Ende des Pfadnamens reicht.

Wenn das erste Zeichen im Dateinamen ein Punkt ist, wird dieser Punkt ignoriert (ein Dateiname wie ".profile" wird nicht als Erweiterung behandelt).

Wenn der Pfadname entweder . oder .. ist, oder wenn filename() nicht den '.' -Zeichen enthält, wird ein leerer Pfad zurückgegeben.

Zusätzliches Verhalten kann durch die Implementierungen für Dateisysteme definiert werden, die zusätzliche Elemente (wie alternative Datenströme oder partitionierte Datensatznamen) zu Erweiterungen hinzufügen.

Inhaltsverzeichnis

Parameter

(keine)

Rückgabewert

Die Erweiterung des aktuellen Pfadnamens oder ein leerer Pfad, falls keine Erweiterung vorhanden ist.

Ausnahmen

Kann implementierungsdefinierte Ausnahmen auslösen.

Hinweise

Die von dieser Funktion zurückgegebene Erweiterung enthält einen Punkt, um zwischen einer Datei, die mit einem Punkt endet (Funktion gibt "." zurück), und einer Datei ohne Erweiterung (Funktion gibt "" zurück) unterscheiden zu können.

Auf einem Nicht-POSIX-System ist es möglich, dass p. stem ( ) + p. extension ( ) ! = p. filename ( ) selbst wenn die generischen Formatversionen identisch sind.

Beispiel

#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
int main()
{
    std::cout << fs::path("/foo/bar.txt").extension() << '\n'
              << fs::path("/foo/bar.").extension() << '\n'
              << fs::path("/foo/bar").extension() << '\n'
              << fs::path("/foo/bar.txt/bar.cc").extension() << '\n'
              << fs::path("/foo/bar.txt/bar.").extension() << '\n'
              << fs::path("/foo/bar.txt/bar").extension() << '\n'
              << fs::path("/foo/.").extension() << '\n'
              << fs::path("/foo/..").extension() << '\n'
              << fs::path("/foo/.hidden").extension() << '\n'
              << fs::path("/foo/..bar").extension() << '\n';
}

Ausgabe:

".txt"
"."
""
".cc"
"."
""
""
""
""
".bar"

Siehe auch

gibt die Dateinamen-Pfadkomponente zurück
(öffentliche Elementfunktion)
gibt die Stamm-Pfadkomponente zurück (Dateiname ohne die Endung)
(öffentliche Elementfunktion)
ersetzt die Dateiendung
(öffentliche Elementfunktion)
prüft, ob das entsprechende Pfadelement nicht leer ist
(öffentliche Elementfunktion)