문제

디렉터리 path = "$HOME/somedir"를 만들고 싶습니다.

boost::filesystem::create_directory(path)를 사용해 보았지만 실패했습니다. 분명히이 함수는 시스템 변수를 확장하지 않습니다.

가장 간단한 방법은 무엇입니까?

(참고 : 제 경우에는 path 문자열이 일정하며 변수가 포함되어 있는지 확실하지 않습니다.)

편집 : 저는 Linux에서 작업 중입니다 (하지만 가까운 장래에 내 앱을 Windows로 이식 할 계획이지만).

도움이 되었습니까?

해결책

getenv 를 사용하여 HOME를 포함한 환경 변수를 가져옵니다. 존재하는지 확실하지 않은 경우 문자열을 파싱하여 찾아야합니다.

시스템 쉘과 echo를 사용하여 쉘이이 작업을 수행하도록 할 수도 있습니다.

Getenv는 이식 가능합니다 (표준 C에서). 그러나 쉘을 사용하여 이식 가능하게하는 것은 * nix와 Windows 사이에서 더 어려울 것입니다. 환경 변수에 대한 규칙은 * nix와 Windows 간에도 다르지만 아마도 문자열은 주어진 플랫폼에 대해 수정할 수있는 구성 매개 변수 일 것입니다.

임의의 환경 변수가 아닌 확장 홈 디렉토리 만 지원해야하는 경우 ~ 규칙을 사용한 다음 구성 문자열에 ~/somedir를 사용할 수 있습니다. 라코 디스

이 동작은 Python의 os.path에서 복사됩니다. .expanduser , 단 현재 사용자 만 처리합니다. USERPROFILE, HOMEDRIVEHOMEPATH가 Linux에서 설정 될 가능성이 낮더라도 다른 환경 변수를 맹목적으로 시도하는 대신 대상 플랫폼을 확인하여 플랫폼에 구애받지 않는 시도를 개선 할 수 있습니다.

다른 팁

내 머리 위로 라코 디스

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top