Предлагаю вам попробовать написать программу для чтения директории (папки) своими руками. Код небольшой, думаю, что набрать его вам не составит особого труда, зато вы попробуете себя в роли программиста С++ и получите представление об этом языке программирования. Как пользоваться компилятором вы можете посмотреть в другой моей статье. Для удобства код я разбил на части, они выложены в виде скриншотов (фото), далее идет объяснение каждой строки.
Итак, поехали:
Подключаем необходимые библиотеки, "iostream" переводится как "поток ввода-вывода", она необходима для таких команд, как "cout", "wcout", "endl" и др. Библиотека "cstdlib" позволяет использовать системные команды "color" и "pause" в программе (команды стандартной консоли Виндоус). "Window.h" необходима для использования так называемых API-функций: "GetCurrentDirectory", "WIN32_FIND_DATA"и др.
Открываем функцию main - это так называемая точка входа в программу и должна присутствовать во всех программах С и С++. Строка setlocale необходима для правильного отображения кирилицы в консоли, без нее вы увидите какие-то кракозябры вместо русских букв. В следующей строке мы получаем так называемый хэндл окна (или хандл - называейте как хотите), он нам понадобится чтобы в связке с функцией ShowWindow развернуть консоль во все окно. Далее объявляем переменные, вместо curr_dir вы можете придумать какое-то свое имя, более короткое или удобное, главное, чтобы оно было написано на латинице. Оператор MAX_PATH позволяет использовать неявный путь к директории, и получать его каждый раз при запуске программы. Явный путь к папке можно указать так:
const char curr_dir[] = "c:\\users\\user";
но в этом случае программа будет открывать только одну указанную папку, что не очень то интересно, правда?
Переменную "s" я указал по привычке, вы можете не включать ее в свою программу, т.е., строчка в этом случае будет выглядеть так:
char curr_dir[MAX_PATH];
Хэндл hFile используется для работы с файлами.
Handle - "ручка" в переводе, это двухбайтовый или четырехбайтовый (по размеру использующихся регистров-указателей ESI, EDI, SI, DI и др.) указатель на какой-то объект (файл, директория и др.), если интересно, то о регистрах вы можете почитать в другой моей статье "Ассемблер.Регистры".
Строка system("color 0a") включена для использования ярко-зеленого цвета - "а" на черном фоне - "0" (так мне больше всего нравится ;)), вы можете поэксперементировать с цветами, для того чтобы узнать какой буквой или цифрой маркируется желаемый цвет наберите в системной консоли (cmd.exe) - color /?
В строке WIN32_FIND_DATA мы объявляем дескриптор f_file, вы можете придумать какое-то свое имя.
Команда GetCurrentDirectory позволяет получить имя текущей директории (папка в которой находится программа), а команда lstrcat прибавляет к имени директории необходимое расширение, в нашем случае программа ищет все файлы, но если вы хотите искать, например, только фотографии, то наберите в компиляторе вместо этой строки:
lstrcat (curr_dir, "\\*.jpg");
Итак, командой FindFirstFile мы ищем первый файл, если произойдет какая-то ошибка, то условие "if" откроет окно с сообщением об ошибке и восклицательным знаком, окно вызывается командой MessageBox. То что следует в скобках за MessageBox вы можете написать одной строкой, только не забудьте убрать знак переноса "\".
Для поиска следующих файлов открываем цикл do - while, найденные файлы выводятся на экран оператором wcout, а оператор endl переводит курсор на новую строку после каждого имени файла. Системный оператор pause приостанавливает выполнение программы до тех пор, пока пользователь не нажмет какую-либо клавишу.
Оператор return не делает ничего, просто по соглашению между программистами каждая функция должна что-то возвращать и строка "return 0;" - это просто правило хорошего тона.
Набирая код посторайтесь не ошибаться - каждая точка или запятая, заглавная или прописная буква имеют значения. Если вы сделаете все правильно, то при запуске программы у вас должно открыться окно консоли как на скриншоте снизу. Удачи в изучении одного из самых мощных языков программирования!
#С++ #Программирование