Namespaces
Variants

std::experimental::filesystem:: path

From cppreference.net
定义于头文件 <experimental/filesystem>
class path ;
(文件系统 TS)

path 类型的对象表示文件系统上的路径。仅处理路径的语法层面:该路径名可能表示不存在的路径,甚至可能表示当前文件系统或操作系统上不允许存在的路径。

路径名称具有以下语法:

  1. 根名称 (可选) : 在多根文件系统中标识根目录(例如 "C:" "//myserver" )。POSIX 文件系统具有单一根目录。
  2. 根目录 (可选) : 目录分隔符,若存在则标记该路径为 绝对路径 。若缺失(且除根名称外的首元素为文件名),则该路径为 相对路径 ,需要另一个路径作为起始位置来解析为文件名。
  3. 以下元素的零个或多个:
  • file-name :由非目录分隔符或首选目录分隔符组成的字符序列(操作系统或文件系统可能施加额外限制)。该名称可标识文件、硬链接、符号链接或目录。存在两种特殊的 file-name
  • dot :由单个点字符 . 组成的文件名,是引用当前目录的目录名称。
  • dot-dot :由两个点字符 .. 组成的文件名,是引用父目录的目录名称。
  • directory-separator s:正斜杠字符 / 或作为 path::preferred_separator 提供的替代字符。若该字符重复出现,将被视为单个目录分隔符: / usr ///////lib 等同于 / usr / lib

路径可以通过 begin() end() 函数返回的迭代器进行逐元素遍历,这些迭代器会依次遍历根名称、根目录以及后续的文件名元素(目录分隔符会被跳过,除了标识根目录的分隔符)。如果路径中的最后一个元素是目录分隔符,则最后一个迭代器将解引用为文件名 dot

调用 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 一个常量 LegacyBidirectionalIterator ,其 value_type path
iterator const_iterator 的别名

成员常量

constexpr value_type preferred_separator
[static]
可替代的目录分隔符,除可移植的 / 外亦可使用。在 Windows 系统中,此为反斜杠字符 \ 。在 POSIX 系统中,此分隔符与可移植分隔符相同,均为正斜杠 /
(公开静态成员常量)

成员函数

构造一个 path
(公开成员函数)
销毁 path 对象
(公开成员函数)
赋值另一个路径
(公开成员函数)
赋值内容
(公开成员函数)
路径拼接
向路径追加元素
(公开成员函数)
拼接两个路径(不引入目录分隔符)
(公开成员函数)
修改器
清空内容
(公开成员函数)
将目录分隔符转换为首选目录分隔符
(公开成员函数)
移除文件名路径组件
(公开成员函数)
用另一个路径替换最后路径组件
(公开成员函数)
替换扩展名
(公开成员函数)
交换两个路径
(公开成员函数)
格式观察器
返回路径的本地版本
(公开成员函数)
返回转换为字符串的本地路径名格式路径
(公开成员函数)
返回转换为字符串的通用路径名格式路径
(公开成员函数)
比较
按字典序比较两个路径的词法表示
(公开成员函数)
路径分解
返回路径的根名称(如果存在)
(公开成员函数)
返回路径的根目录(如果存在)
(公开成员函数)
返回路径的根路径(如果存在)
(公开成员函数)
返回相对于根路径的路径
(公开成员函数)
返回父路径
(公开成员函数)
返回文件名路径组件
(公开成员函数)

非成员函数

交换两个路径
(函数)
按字典序比较两个路径
(函数)
使用目录分隔符连接两个路径
(函数)
对路径执行流输入和输出操作
(函数)
从 UTF-8 编码源创建 path 对象
(函数)