読者です 読者をやめる 読者になる 読者になる

どせいたんさき。

ナスダヨー

C++ でフォルダの中のファイル一覧を取得する

目的

プログラムの中から指定のフォルダ内に存在するファイル・フォルダの一覧を取得したい.

解決方法

C 言語の readdir を利用する.これは dirent.h で定義されている.使い方は以下の通り.

#include <iostream>
#include <cstdlib>
#include <dirent.h>

int
main()
{
  const char* path = "./";
  DIR *dp;       // ディレクトリへのポインタ
  dirent* entry; // readdir() で返されるエントリーポイント

  dp = opendir(path);
  if (dp==NULL) exit(1);
  do {
    entry = readdir(dp);
    if (entry != NULL)
      std::cout << path << entry->d_name << std::endl;
  } while (entry != NULL);
  return 0;
}
$ g++ a.cc
$ ./a.out
./a.cc
./a.out
(...) # その他カレントディレクトリにあるファイルが並ぶ

Linux 系の OS であれば dirent 構造体に d_type というメンバがある.通常のファイルであれば DT_REG が与えられ,ディレクトリであれば DT_DIR が与えられる.プログラムをマルチプラットフォームで使いたいのであれば d_ino (inode 番号) と d_name (ファイル名) 以外は使うべきではない.