std::filesystem::current_path
std::filesystem::current_path (현재 경로 얻기·변경하기)
현재 작업 디렉터리를 얻거나 변경하는 함수예요. C++17부터 있어요.
출처: cppreference
본문
<filesystem> 헤더에 정의돼 있어요.
path current_path(); // (1) C++17
path current_path( std::error_code& ec ); // (2) C++17
void current_path( const std::filesystem::path& p ); // (3) C++17
void current_path( const std::filesystem::path& p, std::error_code& ec ) noexcept; // (4) C++17
현재 경로를 돌려주거나 변경해요.
- 1,2) POSIX
getcwd처럼(네이티브 형식으로) 얻은 현재 작업 디렉터리의 절대 경로를 돌려줘요. (2)는 오류 발생 시path()를 돌려줘요. - 3,4) POSIX
chdir처럼 현재 작업 디렉터리를p로 변경해요.
매개변수
p— 현재 작업 디렉터리를 변경할 경로ec— 예외 없는 버전에서 오류 보고용 출력 매개변수
반환값
- 1,2) 현재 작업 디렉터리.
- 3,4) (없음)
예외
noexcept로 표시되지 않은 오버로드는 메모리 할당이 실패하면 std::bad_alloc을 던질 수 있어요.
-
- OS API 오류가 있으면 OS 오류 코드를 오류 코드 인자로 삼아
std::filesystem::filesystem_error를 던져요.
- OS API 오류가 있으면 OS 오류 코드를 오류 코드 인자로 삼아
-
- OS API 호출이 실패하면
ec에 OS 오류 코드를 설정하고, 오류가 없다면ec.clear()를 실행해요.
- OS API 호출이 실패하면
-
- OS API 오류가 있으면
p를 첫 경로 인자로 삼아std::filesystem::filesystem_error를 던져요.
- OS API 오류가 있으면
-
- OS API 호출이 실패하면
ec에 OS 오류 코드를 설정하고, 오류가 없다면ec.clear()를 실행해요.
- OS API 호출이 실패하면
참고
현재 작업 디렉터리는 프로세스 전역 상태예요. 즉 함수가 current_path()로 현재 값을 얻은 뒤 다른 스레드가 current_path(p)로 변경하면, 얻은 값이 더 이상 유효하지 않을 수 있어요.