Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Абстракция File 
V
    Опции темы
cupper
Дата 26.6.2012, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



Есть ли в std или boost абстракция над fstream & FILE, которая хранила бы имя файла, режим открытия, размер и прочую хрень информацию о файле ?

В boost нашел тока filesystem::path но это не то, совсем не то. Казалось бы такая простая и полезная штука, а ее блин  нигде нету. 

Код

struct File
            {
                File(const std::string& filename);
                ~File();
                void remove();
                size_t size();
                // ....

                enum Mode {NONE, READ, WRITE};
                std::string name_;
                File::Mode mode_;
                std::fstream stream_;
            };

PM MAIL   Вверх
boostcoder
Дата 26.6.2012, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



а для чего такое могло понадобится? оО

PM WWW   Вверх
cupper
Дата 26.6.2012, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



а почему это могло бы не понадобится ?)

Код

some(File& f)
{
    if(f.write("bla bla bla") < 0)
        cerr << "Ошибка записи в файл: " << f.name();
}


проблема началась с того что из fstream нельзя получить имя файла. По этому передавать fstream в функцию не круто. Значит надо передавать пару <fstream, name>. А еще иногда хочется делать отложенное открытие файла, но что бы файловая абстракция уже была. Тогда можно сделать

Код

File f(name);

...
if(!f.open())
    cerr << "опять ошибка" << f.name();

PM MAIL   Вверх
borisbn
Дата 26.6.2012, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135





--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
cupper
Дата 26.6.2012, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



не использую в работе QT, поэтому даже и не вспомнил про него :( Жаль что нет такой же абстракции в бусте.
PM MAIL   Вверх
boostcoder
Дата 26.6.2012, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



начнем с того, что подобного нет как при использовании дескрипторов, так и сишных файловых потоков(FILE). и там подобного так же нет, и потой же причине - потому что ненадо.
хз откуда взялась мысль о том, что файловый объект/поток/дескриптор должен знать имя.

Это сообщение отредактировал(а) boostcoder - 26.6.2012, 11:08
PM WWW   Вверх
cupper
Дата 26.6.2012, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



Цитата(boostcoder @  26.6.2012,  11:07 Найти цитируемый пост)
хз откуда взялась мысль о том, что файловый объект/поток/дескриптор должен знать имя


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

Имя  должна знать более высокоурожайная абстракция. Не удивительно что этого нет в С++, там вообще ничего нет. Странно что этого нет в boost.
PM MAIL   Вверх
boostcoder
Дата 26.6.2012, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



STL как и boost - не фреймверки, и слава алаху.
хз с чего вы решили что файловый поток должен знать имя.

Добавлено через 58 секунд
Цитата(cupper @  26.6.2012,  11:16 Найти цитируемый пост)
Странно что этого нет в boost.

читай выше -
Цитата(boostcoder @  26.6.2012,  11:07 Найти цитируемый пост)
потому что ненадо.


PM WWW   Вверх
Amp
Дата 26.6.2012, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: нет
Всего: 17



Ну в boost-то библиотеки тащатся вообще по непонятным критериям, отчего бы там и такому не быть smile В последнее время кажется, что у них есть критерий - "бесполезно, но прикольно".
PM MAIL   Вверх
boostcoder
Дата 26.6.2012, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(Amp @  26.6.2012,  11:38 Найти цитируемый пост)
по непонятным критериям

для вас smile

Добавлено через 56 секунд
Цитата(Amp @  26.6.2012,  11:38 Найти цитируемый пост)
критерий - "бесполезно, но прикольно"

расскажите, какая из библиотек включенных в последнее время, навела вас на такую мысль?
PM WWW   Вверх
Amp
Дата 26.6.2012, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: нет
Всего: 17



Например "свежие" phoenix, compile-time ratio. И при этом сидеть без средств для работы с xml.
PM MAIL   Вверх
borisbn
Дата 26.6.2012, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



а какая проблема сделать такую обёртку ? кстати, у неё можно переопределить оператор приведения к fstream...

Добавлено через 1 минуту и 57 секунд
Цитата(Amp @  26.6.2012,  11:58 Найти цитируемый пост)
И при этом сидеть без средств для работы с xml. 

как это без xml ? а это - http://www.boost.org/doc/libs/1_49_0/doc/h...e/tutorial.html


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
boostcoder
Дата 26.6.2012, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(Amp @  26.6.2012,  11:58 Найти цитируемый пост)
phoenix, compile-time ratio.

ну понятно.
логика по пронципу: для меня не понятно - значит не нужно.

PM WWW   Вверх
Amp
Дата 26.6.2012, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: нет
Всего: 17



Цитата(borisbn @  26.6.2012,  11:59 Найти цитируемый пост)
как это без xml ? а это - http://www.boost.org/doc/libs/1_49_0/doc/h...e/tutorial.html 

Скажи честно - ты бы взял property tree для работы с xml-ем в проекте? Для документов пообъемнее 10-и строк и сложнее того, что в примерах. Это немного специализированный инструмент и они сами в документации говорят, что на момент написания в boost отсутствует xml-парсер, поэтому берем куций, но маленький быстрый сторонний.

Цитата(boostcoder @  26.6.2012,  12:03 Найти цитируемый пост)
логика по пронципу: для меня не понятно - значит не нужно.

Тут уже наверняка все это десятки раз перетирали, но смотри какая штука. Буст пухнет от библиотек, которые нужны очень ограниченному количеству людей, но при этом не стремится обрастать такими, которые нужны большинству. С другой стороны - они эдакий испытательный полигон перед попадением в стандарт и возможно время покажет применимость той или иной библиотеки. 
PM MAIL   Вверх
boostcoder
Дата 26.6.2012, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(Amp @  26.6.2012,  12:23 Найти цитируемый пост)
Буст пухнет от библиотек, которые нужны очень ограниченному количеству людей

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

Добавлено @ 12:34
Цитата(boostcoder @  26.6.2012,  12:33 Найти цитируемый пост)
по этому буст не стремится быть как все - ибо надобность в нем отпадет.

за два года чтения списка рассылки буста, я не встретил ни одного сообщения подобного тем, что регулярно читаю на кутефорумах. подумай, почему? ;)


Это сообщение отредактировал(а) boostcoder - 26.6.2012, 12:35
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0617 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.