Namespaces
Variants

std::filesystem::path:: replace_extension

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

Reemplaza la extensión con replacement o la elimina cuando se utiliza el valor predeterminado de replacement .

En primer lugar, si esta ruta tiene una extension() , se elimina de la vista en formato genérico del nombre de ruta.

Luego, se añade un carácter de punto a la vista de formato genérico del nombre de ruta, si replacement no está vacío y no comienza con un carácter de punto.

Entonces replacement se añade como si fuera mediante operator + = ( replacement ) .

Contenidos

Parámetros

replacement - la extensión con la que reemplazar

Valor de retorno

* this

Excepciones

Puede lanzar excepciones definidas por la implementación.

Notas

El tipo de replacement es std::filesystem::path aunque no está destinado a representar un objeto en el sistema de archivos para contabilizar correctamente la codificación de caracteres del sistema de archivos.

Ejemplo

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

Salida:

Ruta:             Ext:       Resultado:
"/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"

Véase también

devuelve el componente de extensión de archivo de la ruta
(función miembro pública)
devuelve el componente de nombre de archivo de la ruta
(función miembro pública)
devuelve el componente stem de la ruta (nombre de archivo sin la extensión final)
(función miembro pública)
verifica si el elemento de ruta correspondiente no está vacío
(función miembro pública)