Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
BESSON_off
3 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 351
1

Отличие istreambuf_iterator от istream_iterator

16.05.2014, 19:51. Просмотров 1119. Ответов 7
Метки нет (Все метки)

Прочитал все найденные похожие темы... Протестировал все, что можно... Но отличий так найти и не смог этих двух итераторов... Оба являются адаптерами на входные потоки... Чем же они отличаются?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2014, 19:51
Ответы с готовыми решениями:

Разница межу istream_iterator и istreambuf_iterator
что это за буфер во втором случае? И что он дает в отличие от первого варианта?...

istreambuf_iterator
Кто знает, как через istreambuf_iterator заменить "Inf" на -1?

Как работает istreambuf_iterator?
Всем привет! Уважаемые форумчане, расскажите пожалуйста принцип работы...

Реализация istreambuf_iterator и ostreambuf_iterator
Очень нужна помощь в реализации итераторов istreambuf_iterator и...

istream_iterator
Добрый день, уважаемые форумчане! Прошу ответить на следующий вопрос - почему,...

7
Somebody
2808 / 1619 / 251
Регистрация: 03.12.2007
Сообщений: 4,223
Завершенные тесты: 3
16.05.2014, 20:18 2
Unformatted vs formatted, как operator>> и get.
0
BESSON_off
3 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 351
16.05.2014, 20:37  [ТС] 3
о каком формате речь? istreambuf обходит установки локали? флагов?
0
outoftime
║XLR8║
778 / 677 / 213
Регистрация: 25.07.2009
Сообщений: 3,389
Записей в блоге: 5
16.05.2014, 20:56 4
BESSON_off, http://en.cppreference.com/w/cpp/iterator/istreambuf_iterator
http://en.cppreference.com/w/cpp/iterator/istream_iterator

Внимательно посмотри на объявление. В шаблоне istreambuf_iterator отсутствует class T

Добавлено через 3 минуты
Читаем первую строку после объявления.

std::istreambuf_iterator is a single-pass input iterator that reads successive characters from the std::basic_streambuf object for which it was constructed.
std::istream_iterator is a single-pass input iterator that reads successive objects of type T from the std::basic_istream object for which it was constructed
Первый читает сугубо characters, т.е. символы\буквы, а второй поддерживает чтение любого типа данных

Добавлено через 1 минуту
Мне это не особо интересно, точнее разжевывать не интересно, дальше дочитайте сами.

Добавлено через 2 минуты
Разница между чтением, std::istreambuf_iterator
The actual read operation is performed when the iterator is incremented, not when it is dereferenced.
std::istream_iterator
by calling the appropriate operator>>.
Добавлено через 6 минут
http://en.cppreference.com/w/cpp/ite...ator/operator*
http://en.cppreference.com/w/cpp/iterator/istream_iterator/operator*
Первый возвращаем указатель либо ссылку на текущий объект, а второй константный указатель либо ссылку
0
BESSON_off
3 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 351
16.05.2014, 20:57  [ТС] 5
Я английским к сожалению не владею...
0
outoftime
║XLR8║
778 / 677 / 213
Регистрация: 25.07.2009
Сообщений: 3,389
Записей в блоге: 5
16.05.2014, 21:00 6
http://en.cppreference.com/w/cpp/iterator/istreambuf_iterator/equal этого нету в std::istream_iterator

Добавлено через 1 минуту
BESSON_off, и самое главное
Notes
When reading characters, std::istream_iterator skips whitespace by default (unless disabled with std::noskipws or equivalent), while std::istreambuf_iterator does not. In addition, std::istreambuf_iterator is more efficient, since it avoids the overhead of constructing and destructing the sentry object once per character.
0
alsav22
5450 / 4845 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
16.05.2014, 21:01 7
Цитата Сообщение от BESSON_off Посмотреть сообщение
Чем же они отличаются?
Цитата Сообщение от BESSON_off Посмотреть сообщение
Я английским к сожалению не владею...
http://cpp.com.ru/meyers/ch4.html#t46
Совет 29.
0
outoftime
║XLR8║
778 / 677 / 213
Регистрация: 25.07.2009
Сообщений: 3,389
Записей в блоге: 5
16.05.2014, 21:05 8
Цитата Сообщение от BESSON_off Посмотреть сообщение
Я английским к сожалению не владею...
Поменяй домен 3го уровня с en на ru. Пример:
http://en.cppreference.com/w/cpp/iterator/istreambuf_iterator
http://ru.cppreference.com/w/cpp/iterator/istreambuf_iterator

Добавлено через 2 минуты
alsav22, с конструктором это прикольно. Но я первый написал о пропусках (: Отличие istreambuf_iterator от istream_iterator
0
16.05.2014, 21:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2014, 21:05

istream_iterator
Почему столько ошибок? И как их исправить? Программа из книги, но почему-то не...

istream_iterator
Каким образом итератор std::istream_iterator<int> ii(std::cin); определяет...

Istream_iterator back_inserter
привет всем ! есть такой код vector<int> vec; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru