namespace std::filesystem {
template <class CharT, class Traits>
friend std::basic_ostream<CharT, Traits>&
operator<<(std::basic_ostream<CharT, Traits>& os, const directory_entry& d); // (1) C++17
}
概要
directory_entryオブジェクトが指すパスを、出力ストリームに出力する。
この演算子は、directory_entryクラスのHidden friendsとして定義される。
効果
以下と等価である:
return os << d.path();
戻り値
os
備考
この演算子は、LWG Issue 2989によって一度削除されたが、それが誤りであったためLWG Issue 3171によって復活した。
例
#include <iostream>
#include <filesystem>
#include <fstream>
namespace fs = std::filesystem;
int main()
{
fs::create_directory("dir");
std::ofstream{"dir/a.txt"};
fs::directory_entry entry{"dir/a.txt"};
std::cout << entry << std::endl;
}
出力例
"dir/a.txt"
バージョン
言語
- C++17
処理系
- Clang:
- GCC: 8.1 ✅
- Visual C++: 2017 Update 7 ✅
参照
- LWG Issue 2989. Path's stream insertion operator lets you insert everything under the sun
- この解決で、
directory_entryのストリーム挿入演算子が誤って削除された
- この解決で、
- LWG Issue 3171. LWG2989 breaks
directory_entrystream insertion- C++23で、LWG 2989が誤って削除した
directory_entryのストリーム挿入演算子が復活した
- C++23で、LWG 2989が誤って削除した