1. ホーム
  2. c++

[解決済み] 標準的なC++で、すべてのファイル/ディレクトリを再帰的に反復処理するには?

2022-05-13 10:12:51

質問

標準的な C++ で、すべてのファイル/ディレクトリを再帰的に反復処理するにはどうしたらよいでしょうか。

どのように解決するのですか?

標準 C++ では、ディレクトリの概念がないため、技術的にこれを行う方法はありません。もし、あなたのネットを少し広げたいのであれば、以下のものを使うことをお勧めします。 Boost.FileSystem . これはTR2に含まれることが承認されたので、あなたの実装をできるだけ標準に近づけることができる可能性が高くなります。

ウェブサイトから直接引用した例です。

bool find_file( const path & dir_path,         // in this directory,
                const std::string & file_name, // search for this name,
                path & path_found )            // placing path here if found
{
  if ( !exists( dir_path ) ) return false;
  directory_iterator end_itr; // default construction yields past-the-end
  for ( directory_iterator itr( dir_path );
        itr != end_itr;
        ++itr )
  {
    if ( is_directory(itr->status()) )
    {
      if ( find_file( itr->path(), file_name, path_found ) ) return true;
    }
    else if ( itr->leaf() == file_name ) // see below
    {
      path_found = itr->path();
      return true;
    }
  }
  return false;
}