2011-06-12 3 views
8

예를 들어 문자열이 "root/data/home/file1.txt"이고 "root/data/home"을 얻고 싶습니다. C++에서 편리한 기능이 있나요? 아니면 직접 코딩해야합니까?C++ get 디렉토리 접두어

답변

15

, 즉

std::string path = "root/data/home/file1.txt"; 
// no error checking here 
std::string prefix = path.substr(0, path.find_last_of('/')); 

또는 Boost.Filesystem 같은 세 번째 옵션을은 :

+1

+1 다른 플랫폼에서 작동하는 boosting을 언급합니다. –

2

POSIX 시스템을 사용하는 경우 dirname(3)을 시도하십시오.

2

확실히 언어 자체에는 편리한 기능이 없습니다. 문자열 라이브러리는 find_last_of을 제공합니다. 당신은 기본 문자열 조작을 할 수

0

이 플랫폼에 의존 오히려입니다. 예를 들어, Windows는 경로 구분자로 주로 '\'을 사용하고, Unix는 '/'을 사용하고 MacOS (OSX 이전)는 ':'을 사용합니다.

Windows 고유 API는 PathRemoveFileSpec입니다.