티스토리 뷰
https://en.cppreference.com/w/cpp/filesystem
filesystem 을 이용하면 된다.
#include <filesystem>
namespace fs = std::filesystem;
문제는 gcc version이 8보다 낮으면 위처럼 했을때 에러가 난다. 그런 경우 아래 처럼 작성하자.
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
둘중에 되는 걸로 코드 짜두고 나중에 다른 gcc version상에서 구현해야하는 경우 include 쪽과 namespace 정의 부분만 바꾸면 된다.
filesystem 을 이용해 폴더 생성 함수(mkdir)를 짜보면 아래와 같이 짤 수 있다.
void mkdir( const string &path ) {
fs::path p( path );
if ( fs::is_directory( p ) )
return;
fs::create_directories( p );
}
위 함수내에 if문은 굳이 없어도 되긴할것이다. 폴더가 이미 있는 경우 스킵하도록 짠건데 아마 create_directories 함수 내부에서 이러한 처리가 되어있을것이다.
Usage는 아래와 같다.
mkdir("./newFolder1"); // "./newFolder1"를 생성한다.
mkdir("./newFolder2/subFolder"); // "./newFolder2"를 생성하고 "./newFolder2/subFolder"를 생성한다.
c++ 버전업이되며 개발자들의 편의성을 증진시키기위한 다양한 라이브러리들이 많이 개발된 거 같다. 잘찾아보고 쓴다면 개발 속도를 엄청 높일 수 있을듯하다.
덧 붙여서...
CMake를 이용해 프로젝트를 빌드하는 상황인데 filesystem 헤더를 추가했을때 build가 안되는 문제가 있었다.
이런 경우에 CMakeLists 파일 내에서 target_link_libraries 부분을 찾아 아래처럼 stdc++fs 를 추가해주면 된다.
target_link_libraries(${PROJECT_NAME}
...
stdc++fs
...
)
'C++' 카테고리의 다른 글
[C++] multiple definition of ~ 전담 수비수 static, namespace (0) | 2021.07.29 |
---|---|
[C++] const map 객체 value 접근 (0) | 2021.07.15 |
1인 비트 카운트 함수 (0) | 2021.05.16 |
[C++] const static double 멤버 변수 (0) | 2021.03.30 |
[C++] INT_MAX가 쓰고 싶은 어느날... (0) | 2021.03.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 문제집
- LCA
- 백준 11437
- 자료구조
- 이분탐색
- 백트래킹
- ㅂ
- 순열
- 인공지능을 위한 선형대수
- 위상 정렬 알고리즘
- FairMOT
- 백준 1766
- MOT
- 단축키
- 백준
- C++ Deploy
- 백준 11053
- cosine
- 파이참
- 가장 긴 증가하는 부분 수열
- PyCharm
- 조합
- Lowest Common Ancestor
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함