- filesystem[meta header]
- std::filesystem[meta namespace]
- path[meta class]
- function template[meta id-type]
- cpp17[meta cpp]
namespace std::filesystem {
template <class CharT, class Traits>
std::basic_ostream<CharT, Traits>&
operator<<(std::basic_ostream<CharT, Traits>& os, const path& p); // (1) C++17
}
template <class CharT, class Traits>
friend std::basic_ostream<CharT, Traits>&
operator<<(std::basic_ostream<CharT, Traits>& os, const path& p); // (2) C++20
ストリームに出力する。
path
オブジェクトにおいては、システムのパスフォーマットかつ、ダブルクォーテーション囲みでパス文字列が出力される。
以下と等価:
return os << quoted(p.string<CharT, Traits>());
- quoted[link /reference/iomanip/quoted.md]
- p.string[link string.md]
- この関数は、C++20で非メンバ関数から、friendメンバ関数に変更された。そのため、
std::filesystem::operator<<
という完全名の指定では呼び出せず、ADLによって呼び出すことになる
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
fs::path p = "a/b/c";
std::cout << p << std::endl;
}
"a/b/c"
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
fs::path p = "a/b/c";
std::cout << p << std::endl;
}
"a/b/c"
- C++17
- Clang:
- GCC: 8.1
- Visual C++: 2017 Update 7