std::filesystem::path::remove_filename(3)

NAME
std::filesystem::path::remove_filename - std::filesystem::path::remove_filename

Synopsis
   path& remove_filename(); (since C++17)
   Removes a single generic-format filename component (as returned by filename) from
   the given generic-format path.
   After this function completes, has_filename returns false.

Parameters
   (none)

Return value
   *this

Exceptions
   May throw implementation-defined exceptions.

Example
// Run this code
 #include <iostream>
 #include <filesystem>
 namespace fs = std::filesystem;
 int main()
 {
     fs::path p;
     std::cout << std::boolalpha
         << (p = "foo/bar").remove_filename() << '\t' << p.has_filename() << '\n'
         << (p = "foo/" ).remove_filename() << '\t' << p.has_filename() << '\n'
         << (p = "/foo" ).remove_filename() << '\t' << p.has_filename() << '\n'
         << (p = "/" ).remove_filename() << '\t' << p.has_filename() << '\n'
         << (p = "" ).remove_filename() << '\t' << p.has_filename() << '\n'
         ;
 }

Output:
 "foo/" false
 "foo/" false
 "/" false
 "/" false
 "" false

See also
   filename returns the filename path component
                    (public member function)
   replace_filename replaces the last path component with another path
                    (public member function)
   has_filename checks if the corresponding path element is not empty
                    (public member function)