2009-03-04 4 views
-2

Есть ли способ читать имена файлов из папки, используя исключительно C (++)? Это означает, что без включения windows.h (нет FindFirstFile() и т. Д.). Это не похоже на то, что у fstream есть эта функция. Я знаю, что имена файлов зависят от операционной системы, но я надеялся, что есть некоторая библиотека, которая позволит это в окнах.Чтение имен файлов с помощью C++

Спасибо!

+0

Это точная копия на другой Ваш вопрос, вы только что добавили «нет FindFirstFile().» Старайтесь не добавлять лишние вопросы. –

+0

Посмотрите это решение на свой предыдущий вопрос: http://stackoverflow.com/questions/609203/reading-file-names/609236#609236. Как и всем нам, он рекомендует увеличить. –

ответ

10

boost filesystem - хорошее решение. Конечно, под капотом он все равно будет использовать вызовы API Windows (когда вы будете строить на окнах), но это абстрагируется от вас.

4

C++ обычно не предоставляет вам такую ​​функциональность. Кросс-платформенным решением является использование boost::filesystem.

0

Попробуйте функции POSIX opendir() и readdir() для итерации по каталогам. См. this link для справочной страницы с отличным примером кода. Эти функции должны быть доступны на большинстве платформ, как Windows, так и UNIX.

+0

К сожалению, он не слушал в первый раз, когда вы дали ему ответ: -P. –

+0

Эти функции недоступны в Windows, поскольку Windows не является POSIX. Однако они доступны под Cygwin. –

+0

не делает ли окна небольшим подмножеством функций posix как часть его подсистемы (ну, сбой) -posix? я никогда не был уверен, что это за штука, а что нет. –

0

Если вы хотите использовать opendir() и readdir() для окон, вы можете загрузить MinGW, порт Windows известной коллекции компиляторов GNU. Он включает в себя порты Windows файлов заголовков UNIX, включая dirent.h, что позволит вам использовать указанные функции. Имейте в виду, что они вызовут родной API в любом случае.

-John

+0

На самом деле, я считаю, что вам нужно будет построить поверх cygwin.dll, чтобы это работало. mingw просто предоставляет компилятор c/C++, связанный с временем выполнения Microsoft. –

+0

Вот что я сказал ... он будет называть собственный Win32 API в любом случае, но вам не нужно использовать их в своем коде. –

Смежные вопросы