Модераторы: 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   Вверх
baldina
Дата 26.6.2012, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 15
Всего: 101



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

читая рассылку критерии как раз понятны, но вызывают некоторое недоумение. boost неплохое собрание библиотек, но очень сильно зависит от вкусов (если не сказать - настроения) командного состава.
PM MAIL   Вверх
borisbn
Дата 26.6.2012, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(cupper @  26.6.2012,  11:16 Найти цитируемый пост)
Не удивительно что этого нет в С++, там вообще ничего нет

 smile 
в std::string нет элементарного перевода строки в число и наоборот (в 11-м сделали to_string, но больно он убогий)
там же нет нормальной функции replace( string before, string after, bool replaceAll )
в boost::filesystem нет итерирования по каталогу по маске (*.jpg, например)
ни в std:: ни в boost:: нет возможности работать с вебом на высоком уровне (даже не хочется представлять сиплюсплюсного или бустового монстра, который нужен для того, чтобы скачать какой-нить файл из интернета)
продолжать можно долго...
но, думаю, Си++ создан не для всего этого, а для низкоуровневых, быстрых и простых приложений (а-ля утилитки командной строки у пингвинов)


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


Опытный
**


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

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



Цитата(boostcoder @  26.6.2012,  12:33 Найти цитируемый пост)
вот сам подумай, скольким кутешникам нужен буст для клеапния окошек и диалогов? ;)

А разве не твоя любимая тема - поливать Qt за какие-то проблемы QObject с шаблонами, нет? smile Qt-шники все-таки отдельный разговор - по темам в соседнем разделе начинает напоминать реинкарнацию делфи. Но boost используют, в Qt некоторые вещи сравнительно поздно появились. Хочется людям иметь стандартную библиотеку с "батарейками", не занимаясь раскопками в левых проектах, а boost дает определенные надежды в этом направлении.

Цитата(boostcoder @  26.6.2012,  12:33 Найти цитируемый пост)
за два года чтения списка рассылки буста, я не встретил ни одного сообщения подобного тем, что регулярно читаю на кутефорумах. подумай, почему? ;)

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


pattern`щик
****


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

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



Цитата(baldina @  26.6.2012,  12:41 Найти цитируемый пост)
критерии как раз понятны

почему же вам не понятна необходимость в phoenix и ration?

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

нет.
в буст принимается все, что соответствует стайлу буста.
библиотееки не принимаются по двум причинам:
1. недопиленность.
2. недостаточная аргументированность.

причем, первый пункт - это около 90 процентов.
пойди посмотри boost vault, сколько там библиотек. и напиши с список рассылки дабы узнать статус библиотеки. почти стандартный ответ в этом случае: автор не сделал необходимые изменения/автор пропал.

Цитата(borisbn @  26.6.2012,  12:48 Найти цитируемый пост)
в std::string нет элементарного перевода строки в число и наоборот

основа о старом...
зачм строке переводится в номер и наоборот? smile 
какое отношение строка имеет к дигиталам?

Цитата(borisbn @  26.6.2012,  12:48 Найти цитируемый пост)
нет нормальной функции replace

фейспалм

Цитата(borisbn @  26.6.2012,  12:48 Найти цитируемый пост)
в boost::filesystem нет итерирования по каталогу по маске

фейспалм

Добавлено через 7 минут и 45 секунд
Цитата(borisbn @  26.6.2012,  12:48 Найти цитируемый пост)
boost::filesystem нет итерирования по каталогу по маске

а std::string::iterator итерируется по маске символов?

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


Эксперт
****


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

Репутация: 15
Всего: 101



Цитата(boostcoder @  26.6.2012,  12:57 Найти цитируемый пост)
почему же вам не понятна необходимость в phoenix и ration?

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

и кто и как определяет эту степень? как в ту, так и в другую сторону

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


pattern`щик
****


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

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



Цитата(baldina @  26.6.2012,  13:15 Найти цитируемый пост)
кто и как определяет эту степень?

тема открыто создается в списке рассылки.
все желающие высказывают свое мнение и задаюст вопросы.

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


Эксперт
****


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

Репутация: 15
Всего: 101



Цитата(boostcoder @  26.6.2012,  13:20 Найти цитируемый пост)
все желающие высказывают свое мнение

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


pattern`щик
****


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

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



подсчитываются "за" и "против".

Добавлено через 2 минуты и 1 секунду
baldina, ты прицепился к редкому случаю, когда библиотеку не хотят принять в состав буст.
основная причина - недоделки и забивания авторов.

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


Эксперт
****


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

Репутация: 15
Всего: 101



я не цеплялся. просто выразил скромное мнение, сложившееся у меня от состава boost и способов его разработки
PM MAIL   Вверх
boostcoder
Дата 27.6.2012, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

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



ошибочное мнение.

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


Эксперт
****


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

Репутация: 15
Всего: 101



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

Добавлено через 2 минуты и 19 секунд
Цитата(boostcoder @  27.6.2012,  10:10 Найти цитируемый пост)
ошибочное мнение.

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


pattern`щик
****


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

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



Цитата(baldina @  27.6.2012,  10:16 Найти цитируемый пост)
вкусам рулевых. имхо.

выше же описал.

Цитата(baldina @  27.6.2012,  10:16 Найти цитируемый пост)
обоснуй

выше обосновал.

PM WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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