std::experimental::filesystem::path (3) - Linux Manuals

std::experimental::filesystem::path: std::experimental::filesystem::path


std::experimental::filesystem::path - std::experimental::filesystem::path


Defined in header <experimental/filesystem>
class path; (filesystem TS)

Objects of type path represent paths on a filesystem. Only syntactic aspects of paths are handled: the pathname may represent a non-existing path or even one that is not allowed to exist on the current file system or OS.
The path name has the following syntax:

  1. root-name(optional): identifies the root on a filesystem with multiple roots (such as "C:" or "//myserver". POSIX filesystems have single root.
  2. root-directory(optional): a directory separator that, if present, marks this path as absolute. If it is missing (and the first element other than the root name is a file name), then the path is relative and requires another path as the starting location to resolve to a file name.
  3. Zero or more of the following:

      * file-name: sequence of characters that aren't directory separators or preferred directory separators (additional limitations may be imposed by the OS or file system). This name may identify a file, a hard link, a symbolic link, or a directory. Two special file-names are recognized:

            * dot: the file name consisting of a single dot character . is a directory name that refers to the current directory
            * dot-dot: the file name consisting of two dot characters .. is a directory name that refers to the parent directory.

      * directory-separators: the forward slash character / or the alternative character provided as path::preferred_separator. If this character is repeated, it is treated as a single directory separator: /usr///////lib is the same as /usr/lib

The path can be traversed element-wise via iterators returned by the begin() and end() functions, which iterates over root name, root directory, and the subsequent file name elements (directory separators are skipped except the one that identifies the root directory). If the very last element in the path is a directory separator, the last iterator will dereference to a file name dot.
Calling any non-const member function of a path invalidates all iterators referring to elements of that object.
If the OS uses a native syntax that is different from the portable generic syntax described above, all library functions accept path names in both formats.
Paths are implicitly convertible to and from std::basic_strings, which makes it possible to use them with other file APIs, e.g. as an argument to std::ifstream::open

Member types

Type Definition
value_type character type used by the native encoding of the filesystem: char on POSIX, wchar_t on Windows
string_type std::basic_string<value_type>
const_iterator a constant LegacyBidirectionalIterator with a value_type of path
iterator an alias to const_iterator

Member constants

constexpr value_type preferred_separator alternative directory separator which may be used in addition to the portable /. On Windows, this is the backslash character \. On POSIX, this is the same forward slash / as the portable separator
                                         (public static member constant)

Member functions

                     constructs a path
constructor (public member function)
                     destroys a path object
destructor (public member function)
                     assigns another path
operator= (public member function)
                     assigns contents
assign (public member function)


                     appends elements to the path
append (public member function)
                     concatenates two paths without introducing a directory separator
concat (public member function)


                     erases the contents
clear (public member function)
                     converts directory separators to preferred directory separator
make_preferred (public member function)
                     removes filename path component
remove_filename (public member function)
                     replaces the last path component with another path
replace_filename (public member function)
                     replaces the extension
replace_extension (public member function)
                     swaps two paths
swap (public member function)

 Format observers

c_str returns the native version of the path
native (public member function)

wstring returns the path in native pathname format converted to a string
u8string (public member function)

generic_wstring returns the path in generic pathname format converted to a string
generic_u8string (public member function)


                     compares the lexical representations of two paths lexicographically
compare (public member function)


                     returns the root-name of the path, if present
root_name (public member function)
                     returns the root directory of the path, if present
root_directory (public member function)
                     returns the root path of the path, if present
root_path (public member function)
                     returns path relative to the root path
relative_path (public member function)
                     returns the path of the parent path
parent_path (public member function)
                     returns the filename path component
filename (public member function)
                     returns the stem path component
stem (public member function)
                     returns the file extension path component
extension (public member function)


                     checks if the path is empty
empty (public member function)

has_root_directory checks if the corresponding path element is not empty
has_relative_path (public member function)
                     checks if root_path() uniquely identifies file system location
is_absolute (public member function)


                     iterator access to the path as a sequence of elements
begin (public member function)

Non-member functions

                                          swaps two paths
swap(std::experimental::filesystem::path) (function)

operator!= lexicographically compares two paths
operator< (function)
                                          concatenates two paths with a directory separator
operator/ (function)
                                          performs stream input and output on a path
operator<< (function)
                                          creates a path from a UTF-8 encoded source
u8path (function)