Namespaces
Variants

std::filesystem::path:: replace_extension

From de.cppreference.net
path & replace_extension ( const path & replacement = path ( ) ) ;
(seit C++17)

Ersetzt die Erweiterung durch replacement oder entfernt sie, wenn der Standardwert von replacement verwendet wird.

Zunächst, falls dieser Pfad eine extension() besitzt, wird diese aus der generischen Formatansicht des Pfadnamens entfernt.

Dann wird ein Punktzeichen an die generische Ansicht des Pfadnamens angehängt, falls replacement nicht leer ist und nicht mit einem Punktzeichen beginnt.

Dann wird replacement angehängt, als ob durch operator + = ( replacement ) .

Inhaltsverzeichnis

Parameter

replacement - die Erweiterung, die ersetzt werden soll

Rückgabewert

* this

Ausnahmen

Kann implementierungsdefinierte Ausnahmen auslösen.

Hinweise

Der Typ von replacement ist std::filesystem::path selbst wenn er nicht dazu gedacht ist, ein Objekt im Dateisystem darzustellen, um die Dateisystem-Zeichenkodierung korrekt zu berücksichtigen.

Beispiel

#include <filesystem>
#include <iomanip>
#include <iostream>
#include <utility>
int main()
{
    const int width1{18}, width2{11}; // Spaltenbreite
    std::cout << std::left << std::setw(width1) << "Pfad:"
              << std::setw(width2) << "Erw.:" << "Ergebnis:\n";
    for (const auto& [p, e] : {
            std::make_pair("/foo/bar.jpg", ".png"),
            {"/foo/bar.jpg", "png"},
            {"/foo/bar.jpg", "."},
            {"/foo/bar.jpg", ""},
            {"/foo/bar.", "png"},
            {"/foo/bar", ".png"},
            {"/foo/bar", "png"},
            {"/foo/bar", "."},
            {"/foo/bar", ""},
            {"/foo/.", ".png"},
            {"/foo/.", "png"},
            {"/foo/.", "."},
            {"/foo/.", ""},
            {"/foo/", ".png"},
            {"/foo/", "png"}})
    {
        std::filesystem::path path{p}, ext{e};
        std::cout << std::setw(width1) << path << std::setw(width2) << ext;
        path.replace_extension(ext);
        std::cout << path << '\n';
    }
}

Ausgabe:

Pfad:             Erw.:      Ergebnis:
"/foo/bar.jpg"    ".png"     "/foo/bar.png"
"/foo/bar.jpg"    "png"      "/foo/bar.png"
"/foo/bar.jpg"    "."        "/foo/bar."
"/foo/bar.jpg"    ""         "/foo/bar"
"/foo/bar."       "png"      "/foo/bar.png"
"/foo/bar"        ".png"     "/foo/bar.png"
"/foo/bar"        "png"      "/foo/bar.png"
"/foo/bar"        "."        "/foo/bar."
"/foo/bar"        ""         "/foo/bar"
"/foo/."          ".png"     "/foo/..png"
"/foo/."          "png"      "/foo/..png"
"/foo/."          "."        "/foo/.."
"/foo/."          ""         "/foo/."
"/foo/"           ".png"     "/foo/.png"
"/foo/"           "png"      "/foo/.png"

Siehe auch

gibt die Dateierweiterungskomponente des Pfades zurück
(öffentliche Elementfunktion)
gibt die Dateinamenkomponente des Pfades zurück
(öffentliche Elementfunktion)
gibt die Stammkomponente des Pfades zurück (Dateiname ohne Endung)
(öffentliche Elementfunktion)
prüft, ob das entsprechende Pfadelement nicht leer ist
(öffentliche Elementfunktion)