2012-05-14 2 views
1

특정 디렉토리에있는 목록을 반환하는 함수를 찾고 있습니다.C++ 프로그램에서 하드 드라이브 디렉토리를 어떻게 봅니까?

system("dir"); 

그러나 이것은 단지 작업 디렉토리의 내용을 인쇄, 나는 다른 곳으로 CD 할 수 없습니다 : 내가 찍었을 그 가장 가까운이를 사용하는 것입니다.

저는 Windows를 사용하고 있으며 크로스 플랫폼으로 만들 계획이 없으므로 걱정하지 마십시오.

+3

winapi에서'Find :: FirstFile'과'FindFirstFile'의 조합을 사용하는 것이 마음에 든다. 어떤 환경 설정? –

+1

POSIX 호환 시스템에서 opendir 및 관련 함수를 사용할 수 있습니다. - http://www.kernel.org/doc/man-pages/online/pages/man3/opendir.3.html –

+1

가능한 복제본은 어떻게 얻을 수 있습니까? C 또는 C++을 사용하여 디렉토리에있는 파일 목록?] (http://stackoverflow.com/questions/612097/how-can-i-get-a-list-of-files-in-a-directory-using-c) - 또는 - c) –

답변

2

this page에서 직접 복사 한 다음 예제를 살펴보십시오. boost::filesystem을 사용하므로 모든 주요 시스템에서 작동합니다.

int main(int argc, char* argv[]) 
{ 
    path p (/* Specify a directory here */); 

    try 
    { 
     if (exists(p)) // does p actually exist? 
     { 
      if (is_regular_file(p))  // is p a regular file? 
       cout << p << " size is " << file_size(p) << '\n'; 
      else if (is_directory(p))  // is p a directory? 
      { 
       cout << p << " is a directory containing:\n"; 

       copy(directory_iterator(p), directory_iterator(), // directory_iterator::value_type 
        ostream_iterator<directory_entry>(cout, "\n")); // is directory_entry, which is 
                    // converted to a path by the 
                    // path stream inserter 
      } 
      else 
       cout << p << " exists, but is neither a regular file nor a directory\n"; 
     } 
     else 
      cout << p << " does not exist\n"; 
    } 

    catch (const filesystem_error& ex) 
    { 
     cout << ex.what() << '\n'; 
    } 

    return 0; 
} 
+0

그게 내가 원하는거야 : 3 내가 이해하지 못하는 한 가지 중요한 비트가있다. argv [1]은 무엇인가. 그들이 나에게 말했던 모든 것을 통해 "당신은 메인에 대한 논쟁으로 그것을 넣을 수 있지만 그것은 정말로 아무것도하지 않습니다." 나는 이제 그것이 어떤 목적을 가지고 있다고 가정한다. – Magicaxis

+1

@Magicaxis 잠깐 답변을 수정하겠습니다. BTW, 귀하의 실행 파일이'listDir.exe'이고 명령 줄에'listDir.exe C : \ ExampleDir'을 입력 한 다음'argv [0] = listDir.exe'와'argv [1] = C : \ ExampleDir'라고 입력하십시오. argc = 2이다. c/C++에서의 구글'명령 행 인자'와 더 많이 알 수 있습니다 :). 그리고 이것이 당신의 대답이라면 그것을 표시하십시오. – Hindol

+1

이 사이트의 [C++ - int main (int argc, char ** argv)] (http://stackoverflow.com/q/5217395/78845)도 참조하십시오. – Johnsyweb

관련 문제