C++ чтение содержимого директории
Не то чтобы эта задача была какой-то неподъёмной, но в сети лежат кучи абсолютно разных решений по этому поводу, использует каждый — кто во что горазд. Так что я решил изложить своё видение. И, да, я не буду использовать std::filesystem, просто потому что в разных ide и компиляторах его нужно инклюдить немножечко по разному. До сих пор. Почему-то… Хотя с 2017-го уже вроде как шесть лет прошло…
У меня лежит недописанный черновик статьи по связям в MySQL, но я, в силу лени, а также прочих интересных и не очень обстоятельств ещё не довёл его до того вида, в котором его можно публиковать, так что, греясь в лучах мартовского солнца решил написать и опубликовать
#include <dirent.h> //да, будем использовать «это старьё»
#include <iostream>
using namespace std;
int main (int argc, char** argv) {
DIR *dir; //собственно для этого
struct dirent *ent; //и подключили dirent.h
if ( (dir = opendir ("."))! = NULL) //ну и если указанная директория не пустая ("." — текущая),
{
while ( (ent = readdir (dir))! = NULL) //то пока читаем
{
cout << ent->d_name << endl; //— выводим имена файлов
}
closedir (dir); //не забываем закрыть за собой)
}
else
{
cerr << "failed to open directory." << endl; //хз что тут может пойти не так, но пусть будет
return EXIT_FAILURE; //ну и — возвращаем результат
}
return EXIT_SUCCESS; //каким бы он не был
}
Результат:
Вот так, не особо сложно, не особо много — но мы вывели расстрельный список файлов, которые находятся в каталоге. В принципе — могли бы загнать его в массив, записать в файл — всё это добавляется элементарно. Умейте дискретизировать задачи. И мойте руки перед кодингом.
