1. ホーム
  2. c++

[解決済み] CまたはC++を使用して、ディレクトリ内のファイルのリストを取得するにはどうすればよいですか?

2022-03-14 07:40:33

質問

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

を実行することができないのですが。 ls コマンドを実行し、その結果をプログラム内で解析してください。

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

UPDATE 2017 :

C++17 では、ファイル システムのファイルを一覧表示する公式の方法があります。 std::filesystem . からの素晴らしい回答があります。 Shreevardhan を以下のソースコードに置き換えてください(このコードは投げる可能性があります)。

#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 Ronkko が作成した互換性レイヤー .

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が好きなのです!)。