замена для findfirst () и findnext () - PullRequest
2 голосов
/ 04 июля 2011

Есть ли замена для findfirst() и findnext(). Я использую microsoft visual c++ 2010 express, и он не поддерживает ни эти функции, ни заголовочный файл <dir.h>?

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

Если нет замены указанных функций, есть ли другой выход. ? Некоторые другие функции?

Ответы [ 4 ]

3 голосов
/ 04 июля 2011

Как сказал 'iammilind' в комментариях (вероятно, заслуживает ответа) - вы можете использовать функции FindFirstFile и FindNextFile для Windows API, вам просто нужно заполнить структуруи перебирайте последнее, пока не дойдете до недопустимого дескриптора.Эти функции do работают на консоли, но вы должны включить заголовок «Windows.h».

Однако эти функции поставляются с несколькими подводными камнями, и если вы хотите, чтобы ваш код выполнялсяв любом другом месте, кроме Windows, вам, вероятно, лучше использовать другой заголовок / библиотеку (например, Boost :: Filesystem, упомянутую vBx).

Кроме того, это может помочь: C ++ - Загрузить всеимя файла + количество файлов в текущем каталоге + расширение файла фильтра

1 голос
/ 09 марта 2015

Если вы используете MinGW Developer Studio, это может помочь:

При условии, что у вас есть файлы в каталоге, который вы хотите просмотреть, будет:

sample1.txt
sample2.txt
sample3.txt

Код для двухфайлы, соответствующие шаблону "s *", будут:

#include<stdio.h>
#include<io.h>

int main()
{
    // the input pattern and output struct      
    char *pattern = "s*";
    struct _finddata_t fileinfo;

    // first file (sample1.txt)
    int x = _findfirst(pattern, &fileinfo);
    printf("%s" ,fileinfo.name);

    // next file (sample2.txt)
    _findnext(x, &fileinfo);
    printf("%s" ,fileinfo.name);

}
1 голос
/ 21 сентября 2012

В Windows вы можете использовать: _findnext, _findnext64, _findnexti64, _wfindnext, _wfindnext64, _wfindnexti64

1 голос
/ 04 июля 2011

Вы можете использовать Boost.Filesystem для этого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...