특정 폴더에 아주 많은 디렉토리가 있고, 각 디렉토리의 파일에 접근해야 할 경우 우선 디렉토리의 목록을 모두 가져와야겠죠.
예시로 첨부한 그림처럼 규칙이 어느 정도 보이면 문자열로 처리하면 될텐데, 그렇지 않을 경우 참 곤란합니다.
옛날에 디렉토리 목록을 나열할 방법이 없지는 않을테지만, 라이브러리를 이용하지 않는 이상 코드 라인이 길어지거나 C++ 표준이 아니겠지요.
C++17에서는 아주 쉽게 디렉토리 목록을 나열할 클래스를 제공합니다.
filesystem namespace의 directory_iterator 클래스인데요, 역시나 boost 라이브러리에서 넘어왔죠.
Visual Studio 2015에서는 해당 클래스를 실험적으로 제공하고 있습니다. C++17 표준이 확정되기 이전이라 그랬겠지요.
따라서 filesystem namespace 앞에 experimental namespace를 붙여야 합니다... ^^;
filesystem 헤더 파일을 포함하고 std::experimental::filesystem::directory_iterator 클래스를 사용하시면 되겠습니다.
예제코드:
1
2
3
4
5
6
7
8 |
std::string dir = "D:/test/";
std::vector<std::string> paths;
for( auto& p : std::experimental::filesystem::directory_iterator(dir) )
{
paths.push_back(p.path().string());
}
|
cs |
참고자료:
[1] http://en.cppreference.com/w/cpp/experimental/fs/directory_iterator
'코딩 > C++' 카테고리의 다른 글
C++ 스레드 동기화 그리고 std::condition_variable (0) | 2023.12.04 |
---|