2010-08-24 2 views
2

Что такое эквивалент C++ для PHP is_dir()?Что такое эквивалент C++ для PHP is_dir()?

http://www.php.net/manual/en/function.is-dir.php

BOOL is_dir (строка $ имя файла)
Сообщает ли данное имя файла является каталогом.

Работает только на платформе Linux, какую библиотеку вы бы использовали?

А что, если кросс-платформенная поддержка имела значение, какой метод вы бы использовали?

ответ

4

Функция POSIX lstat (и ее менее безопасный друг stat) возвращает struct, на который вы можете запросить эту информацию. Предусмотрен удобный макрос: S_ISDIR()man 2 lstat для информации об использовании.

Boost также предоставляет библиотеку filesystem, которая обеспечивает простой в использовании набор функций, включая бесплатную функцию is_directory().

+0

'stat()' не «менее безопасен», это просто ... другое. – caf

+1

@caf: Много проблем с безопасностью, с которыми я сталкиваюсь в программном обеспечении, связаны с программами, которые неправильно используют «stat» и в конечном итоге открываются для атаки symlink. 'lstat' просто не поддерживает символические ссылки и поэтому не страдает от этого класса атак. – greyfade

7

В стандарте C++ нет ничего общего с файловыми системами на разных платформах. Для доступа к файловой системе с перекрестной платформой используйте библиотеку Boost Filesystem.

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