ęœ€ēµ‚ę›“ę–°ę—„ę™‚:
ćŒę›“ę–°

屄歓 編集

class
<filesystem>

std::filesystem::recursive_directory_iterator(C++17)

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

処理系