void getFiles(const string& inpath, string outpath)
{
string mask = inpath + "\\*";
WIN32_FIND_DATA FindFileData;
HANDLE hf;
hf = FindFirstFile(mask.c_str(), &FindFileData);
ofstream output;
output.open(outpath + "\\data.txt", ios_base::app);
if (hf != INVALID_HANDLE_VALUE)
{
do
{
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if (strcmp(FindFileData.cFileName, ".") == 0 ||
strcmp(FindFileData.cFileName, "..") == 0) continue;
getFiles(inpath + "\\" + FindFileData.cFileName, outpath);
}
else
output << inpath << "\\" << FindFileData.cFileName << endl;
} while (FindNextFile(hf, &FindFileData) != 0);
FindClose(hf);
}
output.close();
}
Есть такая функция, которая ищет файлы в выбранном каталоге и его подкаталогах, а потом записывает пути к файлам в data.txt. А как мне сделать так, чтобы эта функция искала только файлы с определенным расширением, например, .xml?
Вызов поиска файлов несколько раз с разными расширениями - неверная концепция. Работа с таблицей файлов (на диске) медленнее, чем обработка строк.
Поэтому соберите все расширения в хэш-таблицу, список, массив или даже в одну строку, просканируйте файлы единожды с универсальной маской *
. Для каждого найденного файла выделите его расширение и проверьте, есть ли оно в выбранной структуре, хранящей нужные расширения.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Сказано, что read это системный вызов, и его преимущество перед функциями из других библиотек, в том, что по определению системный вызов должен...
Функция должна сравнивать параметры x и y и присваивать r значение большегоКак можно её реализовать так, чтобы всё не ломалось при передаче...
Продолжая знакомиться с Code::Blocks наткнулся на непонятное поведениеЕсли проект создан с помощью CMake - GDB не видит точек останова в проекте, так...