2012-05-14 4 views
1

私は特定のディレクトリにあるもののリストを返す関数を探しています。C++プログラムでハードドライブのディレクトリを調べるにはどうすればよいですか?

system("dir"); 

しかし、これは作業ディレクトリの内容を印刷し、私はどこか他のCDはできません。 私が得ていることに最も近いが、これを使用することです。

私はウィンドウを使用していますが、クロスプラットフォームにする計画はありませんので、心配しないでください。

+3

winapiの 'boost :: filesystem'または' FindFirstFile'と 'FindNextFile'の組み合わせを使用してください。どんな好み? –

+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待つ私の答えを変更します。ところで、実行ファイルが 'listDir.exe'で、コマンドラインに' listDir.exe C:\ ExampleDir'と入力し、 'argv [0] = listDir.exe'と' argv [1] = C:\ ExampleDir'と入力します。と 'argc = 2'です。 Googleの 'コマンドライン引数をc/C++で'あなたはもっと知っているだろう:)。そして、これがあなたの答えなら、それに印を付けてください。 – Hindol

+1

このサイトの[C++ - int main(int argc、char ** argv)](http://stackoverflow.com/q/5217395/78845)も参照してください:) – Johnsyweb

関連する問題