C++ чтение содержимого директории
C++ чтение содержимого директории

C++ чтение содержимого директории

9 марта 2023       244 просмотра

Не то чтобы эта задача была какой-то неподъёмной, но в сети лежат кучи абсолютно разных решений по этому поводу, использует каждый — кто во что горазд. Так что я решил изложить своё видение. И, да, я не буду использовать 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; //каким бы он не был
}

Результат:

картинко

Вот так, не особо сложно, не особо много — но мы вывели расстрельный список файлов, которые находятся в каталоге. В принципе — могли бы загнать его в массив, записать в файл — всё это добавляется элементарно. Умейте дискретизировать задачи. И мойте руки перед кодингом.