# std::filesystem::path::replace_extension

< cpp‎ | filesystem‎ | path
 path& replace_extension( const path& replacement = path() ); (1) (since C++17)

Replaces the extension with replacement or removes it when the default value of replacement is used.

Firstly, if this path has an extension(), it is removed from the generic-format view of the pathname.

Then, a dot character is appended to the generic-format view of the pathname, if replacement is not empty or does not begin with a dot character.

Then replacement is appended as if by operator+=(replacement)

## Contents

### Parameters

 replacement - the extension to replace with

*this

(none)

### Notes

The type of replacement is std::filesystem::path even though it is not intended to represent an object on the file system in order to correctly account for the filesystem character encoding.

### Example

#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;

int main()
{
fs::path p = "/foo/bar.jpeg";
std::cout << "Was: " << p << '\n';
p.replace_extension(".jpg");
std::cout << "Now: " << p.replace_extension(".jpg") << '\n';
}

Output:

Was: "/foo/bar.jpeg"
Now: "/foo/bar.jpg"