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