[C++] 현재 경로 탐색
이래저래 상대경로로 접근을 하려면 현재경로를 참조해야 할 경우가 있다.
근데 일반적으로 사용되는 현재경로는 프로그램의 실제 위치만을 대상으로 하는 것이 아니라는 점이다.
코드를 짜보자
filesystem은 C++17부터 지원되는 헤더다. 대부분의 컴파일러에서 기본 설정이 되어있지 않아서, 따로 체크를 해줘야 한다.
비주얼 스튜디오의 경우에는 프로젝트 설정 -> C++ -> 언어 -> C++언어 표준에서 C++17을 체크하면 된다.
어쨌든 current_path는 현재 경로를 반환하는 함수이고, 잘 작동하고 있다.
그런데 이걸 환경변수에 등록하고 다른 위치에서 실행하면 어떨까?
실험해보자
환경변수 셋팅하고
실행
분명 실행파일은 VS 리포지토리 안에 들어있는데, 커맨드 상의 위치인 comeng-PC가 잡혀버렸다.
현재경로를 프로세스가 수행된 위치로 잡아버리기 때문인데..
아쉽게도 실행파일의 경로를 잡아내는 기능은 filesystem엔 아직 없는 모양이다.
다행스럽게도 WinAPI에 이에 대한 함수가 있다.
다시 짜보자
파일이름까지 나오는게 좀 다르긴 하지만 잘 수행된다.
그럼 다른 위치에서 실행해도 같을까?
달라지지 않는다!
성공적으로 파일 위치를 지정하고 있다.
실험 끝