문제

Windows-Paths를 검사하고 조작 해야하는 크로스 플랫폼 응용 프로그램을 작성하고 있습니다.

구체적으로, 내가 지금 가지고있는 특정 문제의 경우, 경로가 절대적인지 상대적인지 알아야합니다.

현재 코드가 사용됩니다 boost::filesystem::path 물론 Windows의 매력처럼 작동하는 것은 다음과 같습니다.

boost::filesystem::path the_path(the_path_as_a_string);
if (!the_path.has_root_path()) { /* do stuff */ }

이 접근법의 문제는 그 것입니다 boost::filesystem::path 네이티브와 휴대용의 두 가지 모드 만 있습니다. 이것은 Linux에서 컴파일 할 때 Windows 경로 문법을 사용할 수 없음을 의미합니다 ( #ifdef소스에서 ed). 따라서 "C : Path"경로는 Windows에서는 절대적인 것으로 간주되지만 Linux에서는 상대적으로 간주됩니다.


Windows 경로를 검사하고 조작 할 수있는 크로스 플랫폼 C ++ 라이브러리를 추천 할 수 있습니까?


지금은 내가 할 유일한 Windows-Path 작업은 경로가 절대인지 아닌지 확인하는 것입니다.

절대 경로에 사용할 기준은 둘 다 드라이브 문자를 포함하고 경로는 \. 이 기준에 따른 절대 경로의 예는 다음과 같습니다. C:\path. 이것들은이 기준에 따른 상대 경로의 예입니다. C:path, \path.

도움이 되었습니까?

해결책 2

이를 위해 도서관을 찾기가 어렵습니다. 한 가지 가능성은 PathIsRelative Winelib에서는 Winelib을 사용하고 싶지 않습니다.

나는이 작은 것을 결정하기 위해 매우 구체적인 해결책을 수행하게되었습니다. 경로가 정확하다고 가정하면 (내 경우의 공정한 가정) 절대 경로에는 :\, 상대 경로는 그렇지 않습니다.

따라서 나쁘지만 작동하는 해결책은 다음과 같습니다. 적절한 라이브러리는 없습니다. 존재를 점검하십시오 :\.

다른 팁

QT는 어떻습니까 QfileInfo ?

Linux의 Windows Paths와 프로그램이 무엇을 의미하는지 자세히 설명해 주시겠습니까?

아마도 Windows Path String에 간단한 변환을 적용하여 Unix 경로로 구문으로 변환 한 다음 Boost :: FileSystem을 사용하여 조작하는 것으로 충분할 것입니다.

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