C または C++ を使用してディレクトリ内のファイルのリストを取得するにはどうすればよいでしょうか? 質問する

C または C++ を使用してディレクトリ内のファイルのリストを取得するにはどうすればよいでしょうか? 質問する

C または C++ コード内からディレクトリ内のファイルのリストを確認するにはどうすればよいでしょうか?

lsプログラム内からコマンドを実行して結果を解析することは許可されていません。

ベストアンサー1

2017年更新:

C++17では、ファイルシステムのファイルを一覧表示する公式の方法があります。std::filesystem優れた回答があります。シュリーヴァルダン以下にこのソースコードを示します。

#include <string>
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;

int main()
{
    std::string path = "/path/to/directory";
    for (const auto & entry : fs::directory_iterator(path))
        std::cout << entry.path() << std::endl;
}

古い回答:

小さくて単純なタスクでは、boostは使用せず、を使用しますdirent.h。これはUNIXの標準ヘッダーとして利用可能であり、WindowsでもToni Rönkkö が作成した互換性レイヤー

DIR *dir;
struct dirent *ent;
if ((dir = opendir ("c:\\src\\")) != NULL) {
  /* print all the files and directories within directory */
  while ((ent = readdir (dir)) != NULL) {
    printf ("%s\n", ent->d_name);
  }
  closedir (dir);
} else {
  /* could not open directory */
  perror ("");
  return EXIT_FAILURE;
}

これは単なる小さなヘッダー ファイルであり、boost のような大規模なテンプレート ベースのアプローチを使用せずに、必要なほとんどの単純な処理を実行します (悪気はありませんが、私は boost が好きです)。

おすすめ記事