operator<<,>>(std::filesystem::path)
来自 cppreference.com
< cpp | filesystem | path
template< class CharT, class Traits > friend std::basic_ostream<CharT,Traits>& |
(1) | (自 C++17 起) |
template< class CharT, class Traits > friend std::basic_istream<CharT,Traits>& |
(2) | (自 C++17 起) |
对路径 p 执行流输入或输出。 std::quoted 用于确保在流输入运算符随后读取时,空格不会导致截断。
这些函数模板对普通的 非限定 或 限定查找 是不可见的,只能通过 参数相关查找 在 std::filesystem::path 是参数的关联类时找到。这可以防止在存在 using namespace std::filesystem; 使用指令 时出现不必要的转换。
内容 |
[编辑] 参数
os | - | 要执行输出的流 |
is | - | 要执行输入的流 |
p | - | 要插入或提取的路径 |
[编辑] 返回值
1) os
2) is
[编辑] 异常
可能抛出实现定义的异常。
[编辑] 可能的实现
operator<< |
---|
template<class CharT, class Traits> friend std::basic_ostream<CharT,Traits>& operator<<(std::basic_ostream<CharT,Traits>& os, const path& p) { os << std::quoted(p.string<CharT,Traits>()); return os; } |
operator>> |
template<class CharT, class Traits> friend std::basic_istream<CharT,Traits>& operator>>(std::basic_istream<CharT,Traits>& is, path& p) { std::basic_string<CharT, Traits> t; is >> std::quoted(t); p = t; return is; } |
[编辑] 示例
运行此代码
#include <filesystem> #include <iostream> int main() { std::cout << std::filesystem::current_path() << '\n'; std::cout << std::filesystem::temp_directory_path() << '\n'; }
可能的输出
"/home/user" "/tmp"
[编辑] 缺陷报告
以下行为更改缺陷报告已追溯应用于先前发布的 C++ 标准。
DR | 应用于 | 已发布的行为 | 正确行为 |
---|---|---|---|
LWG 2989 | C++17 | 允许在存在使用指令的情况下插入所有可转换为 path 的内容 |
隐藏友元函数 |