std::experimental::filesystem::path
来自 cppreference.cn
< cpp | experimental | fs
定义于头文件 <experimental/filesystem> |
||
class path; |
(文件系统 TS) | |
path
类型的对象表示文件系统上的路径。只处理路径的语法方面:路径名可能表示一个不存在的路径,甚至是一个在当前文件系统或操作系统上不允许存在的路径。
路径名有以下语法
- 根名(root-name)(可选):标识具有多个根的文件系统上的根(例如 "C:" 或 "//myserver")。POSIX 文件系统只有一个根。
- 根目录(root-directory)(可选):一个目录分隔符,如果存在,则将此路径标记为绝对路径。如果它不存在(并且除了根名之外的第一个元素是文件名),则该路径是相对路径,需要另一个路径作为起始位置来解析为文件名。
- 零个或多个以下内容
- 文件名(file-name):不是目录分隔符或首选目录分隔符的字符序列(操作系统或文件系统可能会施加额外的限制)。此名称可以标识文件、硬链接、符号链接或目录。识别两个特殊的文件名
- 点(dot):由单个点字符 . 组成的文件名,是一个指向当前目录的目录名。
- 点-点(dot-dot):由两个点字符 .. 组成的文件名,是一个指向父目录的目录名。
- 目录分隔符(directory-separator):正斜杠字符 / 或作为
path::preferred_separator
提供的备用字符。如果此字符重复,则将其视为单个目录分隔符:/usr///////lib 与 /usr/lib 相同。
路径可以通过 begin() 和 end() 函数返回的迭代器进行逐元素遍历,该迭代器会遍历根名、根目录以及后续的文件名元素(除了标识根目录的那个分隔符外,其他目录分隔符都会被跳过)。如果路径的最后一个元素是目录分隔符,那么最后一个迭代器将解引用为一个点文件名。
调用 path
的任何非 const 成员函数都会使所有引用该对象元素的迭代器失效。
如果操作系统使用不同于上述可移植通用语法的原生语法,所有库函数都接受两种格式的路径名。
路径可以与 std::basic_string 隐式相互转换,这使得可以将它们与其他文件 API 一起使用,例如作为 std::ifstream::open 的参数。
目录 |
[编辑] 成员类型
类型 | 定义 |
value_type
|
文件系统原生编码所用的字符类型:POSIX 上为 char,Windows 上为 wchar_t |
string_type
|
std::basic_string<value_type> |
const_iterator
|
一个常量双向迭代器,其 value_type 为 path |
iterator
|
const_iterator 的别名 |
[编辑] 成员常量
constexpr value_type preferred_separator [静态] |
备用目录分隔符,可与可移植的 / 一起使用。在 Windows 上,这是反斜杠字符 \。在 POSIX 上,这与可移植分隔符相同,都是正斜杠 / (public static 成员常量) |
[编辑] 成员函数
构造一个 path (公开成员函数) | |
销毁一个 path 对象(公开成员函数) | |
赋值另一个路径 (公开成员函数) | |
赋值内容 (公开成员函数) | |
连接 | |
向路径追加元素 (公开成员函数) | |
连接两个路径而不引入目录分隔符 (公开成员函数) | |
修改器 | |
擦除内容 (公开成员函数) | |
将目录分隔符转换为首选目录分隔符 (公开成员函数) | |
删除文件名路径组件 (公开成员函数) | |
用另一个路径替换最后一个路径组件 (公开成员函数) | |
替换扩展名 (公开成员函数) | |
交换两个路径 (公开成员函数) | |
格式观察器 | |
返回路径的原生版本 (公开成员函数) | |
返回转换为字符串的原生路径名格式的路径 (公开成员函数) | |
返回转换为字符串的通用路径名格式的路径 (公开成员函数) | |
比较 | |
按字典顺序比较两个路径的词法表示 (公开成员函数) | |
分解 | |
返回路径的根名(如果存在) (公开成员函数) | |
返回路径的根目录(如果存在) (公开成员函数) | |
返回路径的根路径(如果存在) (公开成员函数) | |
返回相对于根路径的路径 (公开成员函数) | |
返回父路径的路径 (公开成员函数) | |
返回文件名路径组件 (公开成员函数) | |
返回路径的主干部分 (公开成员函数) | |
返回文件扩展名路径组件 (公开成员函数) | |
查询 | |
检查路径是否为空 (公开成员函数) | |
检查相应路径元素是否不为空 (公开成员函数) | |
检查 root_path() 是否唯一标识文件系统位置 (公开成员函数) | |
迭代器 | |
作为元素序列对路径进行迭代器访问 (公开成员函数) |
[编辑] 非成员函数
交换两个路径 (函数) | |
按字典顺序比较两个路径 (函数) | |
用目录分隔符连接两个路径 (函数) | |
对路径执行流输入和输出 (函数) | |
从 UTF-8 编码源创建 path (函数) |