![]() |
|
Модераторы: bsa |
![]()
|
|
| ilyagoo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 2.5.2010 Где: Санкт-Петербург Репутация: нет Всего: нет |
собственно, сабж:
нужно создать поток (stream) с буфером ограниченного размера (чтобы не рос бесконечно). в этот поток хочу писать байтовый массив: проверить - влезет ли, если да, то записать. из него же читать: если есть достаточное количество данных - прочесть. можно ли сюда прикрутить iostream, и сели да, то как? пытаюсь врубиться уже который день, но понимание все никак не приходит. заранее спаибо за помощь! |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
||||
|
||||
| ilyagoo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 2.5.2010 Где: Санкт-Петербург Репутация: нет Всего: нет |
читал. но вот пример бы... без него как-то не въехать((( iostream абстрактный? |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
||||
|
||||
| ilyagoo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 2.5.2010 Где: Санкт-Петербург Репутация: нет Всего: нет |
||||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
||||
|
||||
| ilyagoo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 2.5.2010 Где: Санкт-Петербург Репутация: нет Всего: нет |
ага. стало быть, конструктор принимает указатель на streambuf, который в свою очередь является объектом, контролирующим буфер. в моем случае - это char[]. Virtual protected member functions подсказываем мне, что функции можно реализовать в наследниках. а вот нужно ли? есть ли реализация по умолчанию и будет ли она сама следить за этим char[]?
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
ilyagoo, стандартная реализация есть - stringbuf. Вот только она расширяет буфер до тех пор, пока память не кончится. Если тебе нужна не такая реализация, то придется писать свой наследник streambuf. Тут можешь посмотреть, сколько виртуальных методов тебе придется переписать.
|
|||
|
||||
| ilyagoo |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 2.5.2010 Где: Санкт-Петербург Репутация: нет Всего: нет |
тогда еще вопрос. куда копируются данные?
вывод:
где в каждый момент времени должны находиться мои данные? |
||||||
|
|||||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
не легче написать свой оператор добавления в поток, который будет проверять перед добавлением и в случае чего бросать исключение?
|
|||
|
||||
| ilyagoo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 2.5.2010 Где: Санкт-Петербург Репутация: нет Всего: нет |
не легче ли написать свой поток? как все-таки работает стандартная библиотека? |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
| toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 4 Всего: 13 |
||||
|
||||
| ilyagoo |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 2.5.2010 Где: Санкт-Петербург Репутация: нет Всего: нет |
спасибо собрал в линухе - все ok. то был результат реализации стандарта от M$ придется самому изобретать велосипед... |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
у меня результат такой:
код тут: http://liveworkspace.org/code/dcde4129fd8b...64674d60fcaf01e |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |