std::filesystem::path::replace_extension (3) - Linux Man Pages
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)
replacement - the extension to replace with
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.
// Run this code
extension (public member function)
filename (public member function)
stem (public member function)
has_extension (public member function)