std::filesystem::path::replace_extension
path& replace_extension( const path& replacement = path() ); | (since C++17) |
Заменяет расширение на replacement или удаляет его, когда используется значение по умолчанию replacement.
Во-первых, если у этого пути есть extension(), он удаляется из представления имени файла в общем формате.
Затем к представлению имени файла в общем формате добавляется символ точки, если replacement не пусто и не начинается с символа точки.
Затем replacement добавляется, как если бы это делалось с помощью operator+=(replacement).
Параметры
| replacement | - | расширение для замены |
Возвращаемое значение
*this
Исключения
Может генерировать исключения, определенные реализацией.
Примечания
Тип replacement — std::filesystem::path, даже если он не предназначен для представления объекта на файловой системе, чтобы правильно учесть кодировку символов файловой системы.
Пример
#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';
}
}Вывод:
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"
См. также
| возвращает компонент пути расширения файла (публичный член-функция) |
|
| возвращает компонент имени файла пути (публичный член-функция) |
|
| возвращает компонент пути стема (имя файла без окончательного расширения) (публичный член-функция) |
|
| проверяет, не пустой ли соответствующий элемент пути (публичный член-функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/filesystem/path/replace_extension