std::experimental::filesystem::path::append, std::experimental::filesystem::path::operator/=
来自cppreference.com
< cpp | experimental | fs | path
path& operator/=( const path& p ); |
(1) | (文件系统 TS) |
template< class Source > path& operator/=( const Source& source ); |
(2) | (文件系统 TS) |
template< class Source > path& append( const Source& source ); |
(3) | (文件系统 TS) |
template< class InputIt > path& append( InputIt first, InputIt last ); |
(4) | (文件系统 TS) |
1) 首先,向 this 追加首选目录分隔符,除非以下任何条件为真:
* 分隔符是多余的(*this 已经以分隔符结尾)。
* *this 为空,或添加它会以某种其他方式将其从相对路径变为绝对路径。
* p 为空路径。
* p.native() 以目录分隔符开始。
然后,向 *this 维护的路径名追加 p.native()。
4) 与 (1) 相同,但接受任何代表多字符字符串的迭代器对。
参数
p | - | 要追加的路径名 |
source | - | std::basic_string,空终结多字符字符串,或指向空终结多字符序列的输入迭代器,它表示一个路径名(可移植或原生格式) |
first, last | - | 一对老式输入迭代器 (LegacyInputIterator) ,指定表示路径名的多字符序列 |
类型要求 | ||
-InputIt 必须满足老式输入迭代器 (LegacyInputIterator) 。
| ||
-InputIt 的值类型必须为编码字符类型(char、wchar_t、char16_t 和 char32_t)之一。 |
返回值
*this
异常
在发生底层 OS API 错误时可能抛出 filesystem_error,或若发生内存分配失败可能抛出 std::bad_alloc。
示例
运行此代码
#include <experimental/filesystem> #include <iostream> namespace fs = std::experimental::filesystem; int main() { fs::path p1 = "C:"; p1 /= "Users"; // 不插入分隔符 // "C:Users" 在 Windows 中是相对路径 // 添加目录分隔符会将其变为绝对路径 std::cout << "\"C:\" / \"Users\" == " << p1 << '\n'; p1 /= "batman"; // 插入 fs::path::preferred_separator,Windows 上为 '\' std::cout << "\"C:\" / \"Users\" / \"batman\" == " << p1 << '\n'; }
可能的输出:
"C:" / "Users" == "C:Users" "C:" / "Users" / "batman" == "C:Users\batman"
参阅
接合两个路径而不引入目录分隔符 (公开成员函数) | |
以一个目录分隔符连接两个路径 (函数) |