Namensräume
Varianten
Aktionen

std::filesystem::path::replace_extension

Von cppreference.com
< cpp‎ | filesystem‎ | path
 
 
 
 
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.

Zuerst wird, falls dieser Pfad eine extension() hat, diese aus der generischen Darstellung des Pfadnamens entfernt.

Dann wird ein Punkt-Zeichen an die generische Darstellung des Pfadnamens angehängt, wenn replacement nicht leer ist und nicht mit einem Punkt-Zeichen beginnt.

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

Inhalt

[bearbeiten] Parameter

replacement - die zu ersetzende Erweiterung

[bearbeiten] Rückgabewert

*this

[edit] Exceptions

Kann implementierungsdefinierte Ausnahmen auslösen.

[bearbeiten] Hinweise

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

[bearbeiten] Beispiel

#include <filesystem>
#include <iomanip>
#include <iostream>
#include <utility>
 
int main()
{
    const int width1{18}, width2{11}; // columns' width
 
    std::cout << std::left << std::setw(width1) << "Path:"
              << std::setw(width2) << "Ext:" << "Result:\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

Path:             Ext:       Result:
"/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"

[bearbeiten] Siehe auch

gibt die Dateiendungs-Pfadkomponente zurück
(public member function) [edit]
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]
prüft, ob das entsprechende Pfadelement nicht leer ist
(öffentliche Memberfunktion)