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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
#1

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

11.04.2014, 13:44. Просмотров 779. Ответов 25
Метки нет (Все метки)

Собственно надоело вводить 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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2014, 13:44     Признак окончания потока для буферного итератора
Посмотрите здесь:

Не работает признак окончания ввода(признак-0) - C++
Признак окончания ввода 0; подскажите люди добрые что не так?) #include <iostream> #include<stdio.h> using namespace std; int...

Бинарные файлы. Признак окончания файла - C++
Здравствуйте Возникла проблема при чтении с бинарного файла, программа не может найти конец файла (точнее я не могу :jokingly:)...

С клавиатуры вводятся последовательность целых чисел.0 - признак окончания последовательности - C++
С клавиатуры вводятся последовательность целых чисел.0 - признак окончания последовательности.Определить,верно ли утверждение : в...

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

Написание итератора для списка - C++
Приветствую. Вот собственно реализация списка: #include "stdafx.h" #include <iostream> #include <cstring> using namespace std; ...

итератора для собственного вектора - C++
помогите пожалуйста сделать итератор для вектора template <class T> class myvector { private: int top;//сколько элементов в...

Класс итератора для класса вектора - C++
Необходимо реализовать собственный класс итератора для прохода по вектору, с перегрузкой оператора ++ - переход к следующему элементу и --...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
14.04.2014, 15:35     Признак окончания потока для буферного итератора #21
Цитата Сообщение от Ilot Посмотреть сообщение
Вообще-то достаточно просто перегрузить констукторы.
Где?

Добавлено через 4 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
ios_base::sync_with_stdio
Эта штука синхронизирует потоки стандартной библиотеки С++ и С. В каком порядке вызываются запись или чтение через них, в таком и будут производиться операции, если синхронизации нет, то потоки С и С++ могут (но не должны) работать независимо.
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
14.04.2014, 15:44  [ТС]     Признак окончания потока для буферного итератора #22
Цитата Сообщение от DrOffset Посмотреть сообщение
Где?
Ага поспешил...
Цитата Сообщение от DrOffset Посмотреть сообщение
Эта штука синхронизирует потоки стандартной библиотеки С++ и С. В каком порядке вызываются запись или чтение через них, в таком и будут производиться операции, если синхронизации нет, то потоки С и С++ могут (но не должны) работать независимо.
Это я уже нагуглил. Вопрос в том какое отношение эта хрень имеет к буферным итераторам? Пока, что я search...
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.04.2014, 15:53     Признак окончания потока для буферного итератора #23
Цитата Сообщение от Ilot Посмотреть сообщение
Вопрос в том какое отношение эта хрень имеет к буферным итераторам?
Интересно, что если эту строчку поместить после объявления итератора, то ввод зависает.
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
14.04.2014, 16:20  [ТС]     Признак окончания потока для буферного итератора #24
Цитата Сообщение от alsav22 Посмотреть сообщение
Интересно, что если эту строчку поместить после объявления итератора, то ввод зависает.
Может быть поэтому:
Вызвав функцию sync_with_stdio(), можно безопасно использовать стандартную С-подобную систему ввода-вывода в согласии с опирающейся на классы системой ввода-вывода C++. Чтобы отключить синхронизацию, передайте функции sync_with_stdio() значение false. Функция возвращает предыдущую установку: значение true означает синхронизацию, а значение false — ее отсутствие. По умолчанию стандартные потоки синхронизированы. Эта функция достоверна только в случае, если она вызывается до выполнения любых других операций ввода-вывода.
alsav22
5416 / 4812 / 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     Признак окончания потока для буферного итератора
Еще ссылки по теме:

Создание итератора для дерева общего вида - C++
Возникла такая проблема: надо сделать итератор для дерева общего вида. Я не знаю, как его лучше сделать. Если кто-то с этим сталкивался,...

Ошибка в перегрузке операторов для класса - итератора - C++
Добрый вечер. Есть заготовка программы для работы с матрицей, построенной из узлов с четырьмя связями (вверх, вниз, влево, вправо)....

Использование потокового итератора для пользовательских обьектов - C++
Надо с помощю итератора ofstream_iterator вывести содержимое множины, в которой есть обьекты пользовательського типа. Вот что я пока...

Итераторы (пример использования итератора для шаблона, к примеру списка) - C++
Доброго времени суток. Форумчани, приведите пожалуйста пример использования итератора для шаблона, к примеру списка. Зараннее благодарен. И...

Составить программу для нахождения времени окончания просмотра фильма - C++
2. Даны четыре целых числа (hour, min, sec, time). Первые три из них (hour, min, sec) — это время (в часах, минутах и секундах) начала...


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

Или воспользуйтесь поиском по форуму:
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
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     Признак окончания потока для буферного итератора
Ответ Создать тему
Опции темы

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