std::filesystem::directory_iterator

std::filesystem::directory_iterator (디렉터리 순회 반복자)

디렉터리의 directory_entry 요소들을 순회하는 LegacyInputIterator예요. 하위 디렉터리는 방문하지 않아요. C++17부터 있어요.

출처: cppreference

본문

<filesystem> 헤더에 정의돼 있어요.

class directory_iterator;

directory_iterator는 디렉터리의 directory_entry 요소들을 순회하는 LegacyInputIterator예요(단, 하위 디렉터리는 방문하지 않아요). 순회 순서는 명세되지 않지만, 각 디렉터리 항목은 정확히 한 번 방문돼요. 특수 경로 이름 .(dot)..(dot-dot)는 건너뛰어져요.

directory_iterator가 오류를 보고하거나 마지막 디렉터리 항목을 지나치면 기본 생성된 반복자(= 끝 반복자)와 같아져요. 두 끝 반복자는 항상 같고, 끝 반복자를 역참조·증가하는 것은 정의되지 않은 동작이에요. 디렉터리 반복자가 생성된 뒤에 파일·디렉터리가 디렉터리 트리에 삭제·추가되면 그 변경이 반복자를 통해 관찰될지 여부는 명세되지 않아요.

멤버 타입

멤버 타입 정의
value_type std::filesystem::directory_entry
difference_type std::ptrdiff_t
pointer const std::filesystem::directory_entry*
reference const std::filesystem::directory_entry&
iterator_category std::input_iterator_tag

멤버 함수

  • (constructor) — 디렉터리 반복자를 생성해요.
  • (destructor) — 기본 소멸자.
  • operator= — 내용을 할당해요.
  • operator, operator->* — 가리키는 항목에 접근해요.
  • increment, operator++ — 다음 항목으로 나아가요.

비멤버 함수

  • begin, end (C++17) — 범위 기반 for 루프 지원.

또한 LegacyInputIterator 요구사항대로 operator==operator!=가 제공돼요(C++20까지는 !=, C++20부터는 ==).

예제

#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;

int main()
{
    for (const auto& entry : fs::directory_iterator("."))
        std::cout << entry.path() << '\n';
}

더 알아보기 (Learn more)

cppreference