2013-08-09 4 views
1

나는 Apple-1, ..., Apple-n이라고하는 이미지 묶음이 있지만 Apple-x가 .jpeg 또는 .png인지 나는 모른다. 그것을 .jpeg 또는 다른 것임을 알지 못하면서 결정하기를 원합니다.C++ 경로에서 확장자를 제공하지 않고 파일 확장자 가져 오기

내가 아는 것은 이미지에 레이블이 지정되어 있고 확장자를 문자열로 가져 오려는 것입니다 (한 문자열에 모두 포함되지는 않으며 모든 이미지를 확인합니다). 나는

이 (여기 물어 비슷한 질문이 있었다,하지만 C#을위한거야 : Get extension of file without providing extension in the path) 어떤 아이디어를 :) 감사

부스트 파일 시스템 라이브러리는이에 대한 기능과 관련된 경로 문제의 훌륭한 세트를 제공
+0

모든 확장자는 실제로 파일 이름의 일부입니다. –

+0

파일 이름을 모르는 경우 어떻게 파일에 액세스합니까? –

+0

거기에 확장 기능이 있지만 어떤 이유로 파일을 가져 오지 않거나 파일에서 완전히 빠져 있습니까? 어떤 플랫폼을 사용하고 계십니까? –

답변

3

쉽게 할 수 boost::filesystem와 그 :

boost::filesystem::path folder(boost::filesystem::current_path()); 
for (boost::filesystem::directory_iterator it(folder), end; 
    it != end; ++it) 
{ 
    auto ext = it->path().extension(); 
    if (ext == ".jpeg") 
    { 
     std::cout << "is jpeg" << std::endl; 
    } 
} 
+0

이것이 효과가 있다고 생각합니다. 시도해 보겠습니다. 고마워요. ext가 항상 문자열이거나 다른 가능성이 있다고 가정 할 수 있습니까? – Auberotte

+0

@Auberotte :'ext'는'boost :: filesystem :: path' 타입입니다. 문자열을 원한다면'string()'함수, 즉'std :: string str = ext.string();'을 사용하십시오. –

+0

안녕하세요, 귀하의 솔루션을 테스트하고 싶었지만 내 컴파일러가 ext에 대해 불평하고 ext가 유형을 지정하지 않고이 범위에서 선언되지 않았다고 말합니다. boost/filesystem.hpp를 제외하고 다른 것을 포함해야합니까? – Auberotte

관련 문제