Форум русскоязычного сообщества Ubuntu


Автор Тема: C++ классы для работы с файловой системой  (Прочитано 3639 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн hippi90

  • Автор темы
  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Доброго времени суток! Есть ли в С++ стандартные классы для кроссплатформенной работы с файловой системой, например, открыть каталог, получить список файлов в каталоге и т.д.? Или придется реализовывать для каждой целевой ОС свой класс с использованием низкоуровневого API?

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: C++ классы для работы с файловой системой
« Ответ #1 : 14 Октября 2011, 05:55:44 »
стандартных нет
почти стандарт - boost::filesystem

Оффлайн hippi90

  • Автор темы
  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: C++ классы для работы с файловой системой
« Ответ #2 : 14 Октября 2011, 20:30:20 »
Как-то не очень хочется тянуть в зависимости Boost. Да и опыта общения с ним нет.

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: C++ классы для работы с файловой системой
« Ответ #3 : 14 Октября 2011, 20:54:32 »
Есть и QIODevice от Qt
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: C++ классы для работы с файловой системой
« Ответ #4 : 15 Октября 2011, 05:18:20 »
О да. Qt тянуть конечно легче =)
Не хочешь тянуть boost пиши свои абстракции над фс и платформозависимые реализаци
подключай при сборке нужную. не будет зависимостей. придётся потрудиться. возможно для твоих задачь это будет оптимально.
а потом тебе понадобится еще кусочек из буста а потом еще. на всё будешь писать велосипеды?

Оффлайн S_F_H

  • Участник
  • *
  • Сообщений: 129
  • Да будет crossplatform!
    • Просмотр профиля
Re: C++ классы для работы с файловой системой
« Ответ #5 : 16 Октября 2011, 17:14:45 »
впринципе в манах по POSIX есть функции, и вроде как они работают для всех ОС, поддерживающих этот стандарт, хотя я могу и ошибаться. а функции fopen() и тому подобное, разве не находятся в стандартных библиотеках?

Оффлайн hippi90

  • Автор темы
  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: C++ классы для работы с файловой системой
« Ответ #6 : 16 Октября 2011, 17:42:47 »
впринципе в манах по POSIX есть функции, и вроде как они работают для всех ОС, поддерживающих этот стандарт, хотя я могу и ошибаться. а функции fopen() и тому подобное, разве не находятся в стандартных библиотеках?
Не все ОС следуют POSIX, не будем тыкать пальцами, но мы все понимаем, о ком идет речь. fopen() используется для открытия файла на чтение/запись, а меня интересует работа с файловой системой, структура каталогов в первую очередь. Тем более, это функция стандартной библиотеки С, в С++ свои инструменты файлового ввода-вывода.

Я всё-таки остановился пока на boost::filesystem, и возник у меня вопрос, не могу разобраться с тамошними итераторами, directory_iterator не поддерживает оператор !=, и такой код не работает:
directory_iterator it(p);
directory_iterator end_it();
while (it != end_it) {
do_something(*it);
it++;
}
Как пробежать по всем значениям итератора?

 

Страница сгенерирована за 0.051 секунд. Запросов: 25.