std::filesystem::path::remove_filename
From cppreference.com
                    
                                        
                    < cpp | filesystem | path
                    
                                                            
                    |   path& remove_filename()  | 
(1) | (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
(none)
Example
Run this code
#include <iostream> #include <filesystem> namespace fs = std::filesystem; int main() { std::cout << fs::path("foo/bar").remove_filename() << '\n' << fs::path("foo/").remove_filename() << '\n' << fs::path("/foo").remove_filename() << '\n' << fs::path("/").remove_filename() << '\n'; }
Output:
"foo/" "foo/" "/" "/"
See also
|    returns the filename path component  (public member function)  | |
|    replaces the last path component with another path  (public member function)  | |
|    checks if the corresponding path element is not empty  (public member function)  |