operator<<,>>(std::filesystem::path)
来自 cppreference.cn
< 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; using-指示时发生不期望的转换。
目录 |
[编辑] 参数
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++ 标准。
缺陷报告 | 应用于 | 发布时的行为 | 正确的行为 |
---|---|---|---|
LWG 2989 | C++17 | 在有 using-指示 的情况下,允许插入所有可转换为 path 的内容 |
设为隐藏友元 |