Namensräume
Varianten
Aktionen

std::filesystem::path::extension

Von cppreference.com
< cpp‎ | filesystem‎ | path
 
 
 
 
pfad-erweiterung() const;
(seit C++17)

Gibt die Erweiterung der Dateinamenskomponente der generischen Ansicht von *this zurück.

Wenn die filename()-Komponente des generisch formatierten Pfads einen Punkt (.) enthält und nicht eines der speziellen Dateisystemelemente dot oder dot-dot ist, dann ist die Erweiterung der Teilstring, der am 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 das Zeichen '.' enthält, dann wird ein leerer Pfad zurückgegeben.

Zusätzliches Verhalten kann von den Implementierungen für Dateisysteme definiert werden, die zusätzliche Elemente (wie alternative Datenströme oder partitionierte Dataset-Namen) an Erweiterungen anhängen.

Inhalt

[bearbeiten] Parameter

(keine)

[bearbeiten] Rückgabewert

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

[edit] Exceptions

Kann implementierungsdefinierte Ausnahmen auslösen.

[bearbeiten] Anmerkungen

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(), obwohl die generischen Versionen gleich sind.

[bearbeiten] 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"

[bearbeiten] Siehe auch

gibt die Dateinamen-Pfadkomponente zurück
(public member function) [edit]
gibt die Stem-Pfadkomponente zurück (Dateiname ohne die finale Endung)
(public member function) [edit]
ersetzt die Dateiendung
(public member function) [edit]
prüft, ob das entsprechende Pfadelement nicht leer ist
(öffentliche Memberfunktion)