[C++] directory listing (traversal)
원래는 boost에 있는 API이고, C++ 17에서 표준으로 추가되었기 때문에, boost를 추가하거나 컴파일러를 C++17로 변경해야 한다.
후자가 더 편하기 때문에, 프로젝트 설정 - C/C++ - Language - C++ Language Standard를 `` /std:c++17``로 변경해준다.
```cpp
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
using namespace std;
int main(int argc, char **argv)
{
for (auto& p : fs::recursive_directory_iterator(root_path)) {
/* .path() 메서드가 다시 path 객체를 리턴하기 때문에
C style의 입출력을 사용하지 못함. << operator를 사용해야 한다.*/
printf("[%d] ", p.is_directory());
cout << p.path() << ' ' << p.file_size() << " Byte\n";
// C style의 입출력을 사용하려면 다음과 같이 하면 된다.
printf("%s\n", p.path().string().c_str());
}
return 0;
}
```
'Languages & Frameworks > C C++' 카테고리의 다른 글
[C++] \r이 포함된 문자열 출력할 때 이상하게 출력되는 현상 (0) | 2018.08.21 |
---|---|
[C++] 맵 : unordered_map (hash_map) (2) | 2018.08.20 |
[C/C++] clock : 수행 시간 측정 / logging : 에러 출력 (0) | 2018.08.09 |
[C++] File IO : <ifstream> 과 pubsetbuf() (0) | 2018.08.03 |
[C/C++]의 동적 할당과 Memory leak (0) | 2018.06.11 |