namespace std::filesystem {
class recursive_directory_iterator;
}
ę¦č¦
recursive_directory_iteratorćÆććć£ć¬ćÆććŖå
ćååø°ēć«čµ°ę»ććå
„åć¤ćć¬ć¼ćæćÆć©ć¹ć§ććć
std::filesystem::directory_iteratorćÆć©ć¹ćÆęå®ććććć£ć¬ćÆććŖē“äøć®ćć”ć¤ć«ćčµ°ę»ćććććć®ć¤ćć¬ć¼ćæćÆćć£ć¬ćÆććŖå
ć®ćć£ć¬ćÆććŖćååø°ēć«čµ°ę»ććć
ćć”ć¤ć«ć®čµ°ę»é åŗćÆęŖč¦å®ć§ććććć”ć¤ć«åć®č¾ęøé ć«čµ°ę»ćććäæčؼćÆćŖćć
ć”ć³ćé¢ę°
ę§ēÆć»ē “ę£
| åå | čŖ¬ę | 対åæćć¼ćøć§ć³ |
|---|---|---|
(constructor) |
ć³ć³ć¹ćć©ćÆćæ | C++17 |
~recursive_directory_iterator(); |
ćć¹ćć©ćÆćæ | C++17 |
operator= |
ä»£å „ę¼ē®å | C++17 |
観測
| åå | čŖ¬ę | 対åæćć¼ćøć§ć³ |
|---|---|---|
options |
čµ°ę»ćŖćć·ć§ć³ćåå¾ćć | C++17 |
depth |
ćć£ć¬ćÆććŖć®ę·±ććåå¾ćć | C++17 |
recursion_pending |
ååø°ććŖććć©ćććęŖę±ŗå®ćć確čŖćć | C++17 |
å¤ę“
| åå | čŖ¬ę | 対åæćć¼ćøć§ć³ |
|---|---|---|
operator* |
éę„åē §ę¼ē®å | C++17 |
operator-> |
ć”ć³ćć¢ćÆć»ć¹ę¼ē®å | C++17 |
operator++ |
ć¤ćć¬ć¼ćæćé²ćć | C++17 |
increment |
ć¤ćć¬ć¼ćæćé²ćć | C++17 |
pop |
ćć®ćć£ć¬ćÆććŖć®čµ°ę»ćäøęćć | C++17 |
disable_recursion_pending |
ååø°ćę¢ćć | C++17 |
ć”ć³ćå
| åå | čŖ¬ę | 対åæćć¼ćøć§ć³ |
|---|---|---|
iterator_category |
ć¤ćć¬ć¼ćæēØ®å„ input_iterator_tag |
C++17 |
value_type |
č¦ē“ å directory_entry |
C++17 |
difference_type |
ć¤ćć¬ć¼ćæć®å·®ć蔨ć符å·ä»ćę“ę°å std::ptrdiff_t |
C++17 |
pointer |
č¦ē“ ćøć®ćć¤ć³ćæå const directory_entry* |
C++17 |
reference |
č¦ē“ ćøć®ćć¤ć³ćæå const directory_entry& |
C++17 |
éć”ć³ćé¢ę°
ć¤ćć¬ć¼ćæēÆå²
| åå | čŖ¬ę | 対åæćć¼ćøć§ć³ |
|---|---|---|
begin |
å é č¦ē“ ćøć®ć¤ćć¬ć¼ćæćåå¾ćć | C++17 |
end |
ęå¾å°¾č¦ē“ ć®ę¬”ćęćć¤ćć¬ć¼ćæćåå¾ćć | C++17 |
ęÆč¼ę¼ē®å
| åå | čŖ¬ę | 対åæćć¼ćøć§ć³ |
|---|---|---|
operator== |
ēå¤ęÆč¼ | C++17 |
operator!= |
éēå¤ęÆč¼ | C++17 |
ä¾
#include <iostream>
#include <filesystem>
#include <fstream>
namespace fs = std::filesystem;
int main()
{
fs::create_directory("dir_a");
std::ofstream{"dir_a/a.txt"};
fs::create_directory("dir_a/dir_b");
std::ofstream{"dir_a/dir_b/b.txt"};
// dir_aćć£ć¬ćÆććŖć«å«ć¾ććå
Øćć”ć¤ć«ć»ćć£ć¬ćÆććŖćååø°ēć«åŗå
for (const fs::directory_entry& x : fs::recursive_directory_iterator("dir_a")) {
std::cout << x.path() << std::endl;
}
}
åŗåä¾
"dir_a/a.txt"
"dir_a/dir_b"
"dir_a/dir_b/b.txt"
ćć¼ćøć§ć³
čØčŖ
- C++17
å¦ēē³»
- Clang: 7.0 ā
- GCC: 8.1 ā
- Visual C++: