|
| Path () noexcept(noexcept(std::string())) |
| Default constructor for a zero-length path. More...
|
|
| Path (const std::string &path) |
| Implicit constructor from a string. More...
|
|
| Path (std::string_view path) |
| Implicit constructor from a string view. More...
|
|
| Path (const char *path) |
| Implicit constructor from a c string. More...
|
|
| Path (const Path &path, const std::string &tail) |
| Constructor with an implicit pathAppend(). More...
|
|
| Path (const Path &path, const std::string &tail_1, const std::string &tail_2) |
| Constructor with two implicit pathAppend()s. More...
|
|
| Path (const Path &path, const std::string &tail_1, const std::string &tail_2, const std::string &tail_3) |
| Constructor with three implicit pathAppend()s. More...
|
|
bool | empty () const noexcept |
| Returns true if the path is empty. More...
|
|
std::string | str () const |
| Returns the path string. More...
|
|
const iopath_char_type * | iopath () const |
| Returns the path's string with a type that is suitable for initialising std::fstreams. More...
|
|
const value_type * | cstr () const noexcept |
| Returns the path's c-string. More...
|
|
bool | simple () const |
| Returns true if the path has a single component (ignoring "." parts), ie. More...
|
|
std::string | basename () const |
| Returns the rightmost part of the path, ignoring "." parts. More...
|
|
Path | dirname () const |
| Returns the path without the rightmost part, ignoring "." parts. More...
|
|
std::string | extension () const |
| Returns the path's basename extension, ie. More...
|
|
Path | withExtension (const std::string &ext) const |
| Returns the path with the new basename extension. More...
|
|
Path | withoutExtension () const |
| Returns a path without the basename extension, if any. More...
|
|
Path | withoutRoot () const |
| Returns a path without the root part. More...
|
|
bool | isRoot () const noexcept |
| Returns true if the path is a root, like "/", "c:", "c:/", "\\server\volume" etc. More...
|
|
bool | isAbsolute () const noexcept |
| Returns !isRelative(). More...
|
|
bool | isRelative () const noexcept |
| Returns true if the path is a relative path or empty(). More...
|
|
Path & | pathAppend (const std::string &tail) |
| Appends a filename or a relative path to this path. More...
|
|
bool | replace (const std::string_view &from, const std::string_view &to, bool ex_root=false) |
| Replaces the first occurrence of 'from' with 'to', optionally excluding the root part. More...
|
|
StringArray | split () const |
| Spits the path into a list of component parts (ignoring "." parts unless the whole path is "."). More...
|
|
Path | collapsed () const |
| Returns the path with "foo/.." and "." parts removed, so far as is possible without changing the meaning of the path. More...
|
|
void | swap (Path &other) noexcept |
| Swaps this with other. More...
|
|
bool | operator== (const Path &path) const noexcept(noexcept(std::string().compare(std::string()))) |
| Comparison operator. More...
|
|
bool | operator!= (const Path &path) const noexcept(noexcept(std::string().compare(std::string()))) |
| Comparison operator. More...
|
|
A Path object represents a file system path.
The class is concerned with path syntax, not file system i/o.
A full path is made up of a root, a set of directories, and a filename. The posix root is just a forward slash, but on Windows the root can be complex, possibly including non-splitting separator characters. The filename may have an extension part, which is to the right of the right-most dot.
The path separator is used between directories and filename, but only between the root and the first directory if the root does not itself end in a separator character.
A windows drive-letter root may end with a separator character or not; if there is no separator character at the end of the drive-letter root then the path is relative to the drive's current working directory.
Path components of "." are ignored by simple(), basename(), and dirname(). Path components of ".." are retained but can be eliminated if they are collapsed(). Path components of "." are eliminated by split(), except in the degenerate case.
This class is agnostic on the choice of UTF-8 or eight-bit characters since the delimiters are all seven-bit ascii. Wide characters are not used, following "utf8everywhere.org" rather than std::filesystem::path (but see G_ANSI as a temporary deprecated feature).
Most file operations should be handled in o/s-aware source (see G::File, G::Environment, G::Process etc) so that the Path character encoding is opaque. However, std::fstream objects can be initialised directly by using G::Path::iopath().
Both posix and windows behaviours are available at run-time; the default behaviour is the native behaviour, but this can be overridden, typically for testing purposes.
The posix path separator character is the forward-slash; on Windows it is a back-slash, but with all forward-slashes converted to back-slashes immediately on input.
- See also
- G::File, G::Directory
Definition at line 81 of file gpath.h.