Форум программистов, компьютерный форум CyberForum.ru

Признак окончания потока для буферного итератора - C++

Восстановить пароль Регистрация
 
 
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
11.04.2014, 13:44     Признак окончания потока для буферного итератора #1
Собственно надоело вводить ctrl+z для ввода признака окончания потока, засим возник вопрос а возможно ли изменить этот самый признак для буферного итератора?
Взглянул на заголовочники - узрел эти конструкторы:
C++
1
2
3
4
5
6
7
8
9
10
11
      ///  Construct end of input stream iterator.
      istreambuf_iterator() throw()
      : _M_sbuf(0), _M_c(traits_type::eof()) { }
 
      ///  Construct start of input stream iterator.
      istreambuf_iterator(istream_type& __s) throw()
      : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { }
 
      ///  Construct start of streambuf iterator.
      istreambuf_iterator(streambuf_type* __s) throw()
      : _M_sbuf(__s), _M_c(traits_type::eof()) { }
Таким образом получается необходимо что бы traits_type::eof() возвращало к примеру '\n' и что бы все это работало со стандартными потоками. Как бы это сделать?
(traits_type это шаблон char_traits)

Добавлено через 2 часа 10 минут
Неужели задача такая сложная?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6424 / 3798 / 879
Регистрация: 30.01.2014
Сообщений: 6,591
14.04.2014, 15:35     Признак окончания потока для буферного итератора #21
Цитата Сообщение от Ilot Посмотреть сообщение
Вообще-то достаточно просто перегрузить констукторы.
Где?

Добавлено через 4 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
ios_base::sync_with_stdio
Эта штука синхронизирует потоки стандартной библиотеки С++ и С. В каком порядке вызываются запись или чтение через них, в таком и будут производиться операции, если синхронизации нет, то потоки С и С++ могут (но не должны) работать независимо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
14.04.2014, 15:44  [ТС]     Признак окончания потока для буферного итератора #22
Цитата Сообщение от DrOffset Посмотреть сообщение
Где?
Ага поспешил...
Цитата Сообщение от DrOffset Посмотреть сообщение
Эта штука синхронизирует потоки стандартной библиотеки С++ и С. В каком порядке вызываются запись или чтение через них, в таком и будут производиться операции, если синхронизации нет, то потоки С и С++ могут (но не должны) работать независимо.
Это я уже нагуглил. Вопрос в том какое отношение эта хрень имеет к буферным итераторам? Пока, что я search...
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.04.2014, 15:53     Признак окончания потока для буферного итератора #23
Цитата Сообщение от Ilot Посмотреть сообщение
Вопрос в том какое отношение эта хрень имеет к буферным итераторам?
Интересно, что если эту строчку поместить после объявления итератора, то ввод зависает.
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
14.04.2014, 16:20  [ТС]     Признак окончания потока для буферного итератора #24
Цитата Сообщение от alsav22 Посмотреть сообщение
Интересно, что если эту строчку поместить после объявления итератора, то ввод зависает.
Может быть поэтому:
Вызвав функцию sync_with_stdio(), можно безопасно использовать стандартную С-подобную систему ввода-вывода в согласии с опирающейся на классы системой ввода-вывода C++. Чтобы отключить синхронизацию, передайте функции sync_with_stdio() значение false. Функция возвращает предыдущую установку: значение true означает синхронизацию, а значение false — ее отсутствие. По умолчанию стандартные потоки синхронизированы. Эта функция достоверна только в случае, если она вызывается до выполнения любых других операций ввода-вывода.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.04.2014, 17:57     Признак окончания потока для буферного итератора #25
Цитата Сообщение от Ilot Посмотреть сообщение
до выполнения
А где там начинается выполнение?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2014, 17:59     Признак окончания потока для буферного итератора
Еще ссылки по теме:

С клавиатуры вводятся последовательность целых чисел 0 - признак окончания последовательности C++
Составить программу для нахождения времени окончания просмотра фильма C++
Бинарные файлы. Признак окончания файла C++

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

Или воспользуйтесь поиском по форуму:
DrOffset
6424 / 3798 / 879
Регистрация: 30.01.2014
Сообщений: 6,591
14.04.2014, 17:59     Признак окончания потока для буферного итератора #26
Цитата Сообщение от alsav22 Посмотреть сообщение
А где там начинается выполнение?
Ну посмотри хотя бы на мой вариант итератора. Он идентичен стандартному за исключением символа eof.
C++
1
2
3
endline_iterator(istream_type & s) throw()
     : sbuf(s.rdbuf()), c(eof_value())
{ }
rdbuf() видишь?
Yandex
Объявления
14.04.2014, 17:59     Признак окончания потока для буферного итератора
Ответ Создать тему
Опции темы

Текущее время: 06:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru