Namespaces
Variants

std::filesystem::path:: replace_extension

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

Remplace l'extension par replacement ou la supprime lorsque la valeur par défaut de replacement est utilisée.

Premièrement, si ce chemin possède une extension() , celle-ci est supprimée de la vue au format générique du nom de chemin.

Ensuite, un point est ajouté à la vue au format générique du chemin d'accès, si replacement n'est pas vide et ne commence pas par un point.

Ensuite replacement est ajouté comme si par operator + = ( replacement ) .

Table des matières

Paramètres

replacement - l'extension à remplacer

Valeur de retour

* this

Exceptions

Peut lever des exceptions définies par l'implémentation.

Notes

Le type de replacement est std::filesystem::path même s'il n'est pas destiné à représenter un objet sur le système de fichiers afin de prendre correctement en compte l'encodage des caractères du système de fichiers.

Exemple

#include <filesystem>
#include <iomanip>
#include <iostream>
#include <utility>
int main()
{
    const int width1{18}, width2{11}; // largeur des colonnes
    std::cout << std::left << std::setw(width1) << "Chemin:"
              << std::setw(width2) << "Ext:" << "Résultat:\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';
    }
}

Sortie :

Chemin:          Ext:       Résultat:
"/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"

Voir aussi

renvoie le composant d'extension du chemin de fichier
(fonction membre publique)
renvoie le composant nom de fichier du chemin
(fonction membre publique)
renvoie le composant racine du chemin (nom de fichier sans l'extension finale)
(fonction membre publique)
vérifie si l'élément de chemin correspondant n'est pas vide
(fonction membre publique)