Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/50: Рейтинг темы: голосов - 50, средняя оценка - 4.90
Alexen
6 / 6 / 1
Регистрация: 14.11.2008
Сообщений: 82
#1

Поток cin

20.03.2009, 11:01. Просмотров 8991. Ответов 6
Метки нет (Все метки)

Ребят подскажите почему после того как в цикле для потока cin устанавливается по команде Ctrl+z бит eofbit я не могу юзать поток cin он у меня все cin >> игнарирует даже если я очищаю поток cin.clear() он все равно игнарирует сины.
Пример:

C++
1
2
3
4
5
6
7
8
while(cin >> client) выход через Ctrl+z
{
if (client.getTelephon()) {temp << client;}
}
 
if(cin.rdstate() && !cin.eof()) {cerr << "Произошла ошибка ввода данных"<< endl; exit(1);}
cin.clear();
cin >> x; игнорируется
и как это исправить?? зарание СПС.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2009, 11:01
Ответы с готовыми решениями:

Как работает cin.peek, cin,get, cin.ignore, cin.clear?
Здравствуйте, товарищи и не товарищи!:) Я только начал изучать C++, а уже...

Запись в поток cin >>
Люди добрые подскажите где взять инфу по функциям для ввода/вывода и...

Поток ввода cin
Привет. Я только начинаю учить C++, так что не смейтесь если проблема...

Поток ввода cin
vector&lt;string&gt; str; for (string s; cin &gt;&gt; s &amp;&amp; !s.empty(); str.push_back(s));...

Пропускает поток ввода cin
Решал задачку из книжки Страуструпа. В общей сложности решил. Но столкнулся с...

6
Vourhey
Почетный модератор
6492 / 2266 / 185
Регистрация: 29.07.2006
Сообщений: 12,534
20.03.2009, 11:16 #2
Используй поиск. На форуме уже есть точно такая же тема. В ней ответ.

Добавлено через 1 минуту 55 секунд
Почему не выполняется один из операторов ввода,помеченые * например
0
XaosLord
3 / 3 / 0
Регистрация: 18.03.2009
Сообщений: 20
21.03.2009, 17:32 #3
Цитата Сообщение от Vourhey Посмотреть сообщение
Используй поиск. На форуме уже есть точно такая же тема. В ней ответ.

Добавлено через 1 минуту 55 секунд
Почему не выполняется один из операторов ввода,помеченые * например
Там нет ответа.

Присоединяюсь к вопросу. У меня получилось реализовать только выносом cin в отдельную функцию. Но это ИМХО извращение.
0
Vourhey
Почетный модератор
6492 / 2266 / 185
Регистрация: 29.07.2006
Сообщений: 12,534
21.03.2009, 17:56 #4
Там нет ответа для тех, кто искать не может и читать тоже. Тут была тема, в которой я объяснил почему и что происходит. Самому мне искать ее влом.
0
Alexen
6 / 6 / 1
Регистрация: 14.11.2008
Сообщений: 82
22.03.2009, 14:13  [ТС] #5
Цитата Сообщение от XaosLord Посмотреть сообщение
Там нет ответа.

Присоединяюсь к вопросу. У меня получилось реализовать только выносом cin в отдельную функцию. Но это ИМХО извращение.
Есть ответ и думаю что тебе именно это надо: чтоб сразу вернуть рабочее состояние cin из состояния -1 необходимо запустить поток с нулевой позиции)) может я не правильно выразился но сделать так:

C++
1
2
3
4
5
while(cin >> client) выход через Ctrl+z
{.....}
cin.clear(); очистить поток и затем выставить позиционирование в 0
cin.seekg(0);
cin >> x; работает
1
Vourhey
Почетный модератор
6492 / 2266 / 185
Регистрация: 29.07.2006
Сообщений: 12,534
22.03.2009, 17:20 #6
clear не очищает поток. Она просто сбрасывает биты.
Игнорирует cin в цикле.
0
Alexen
6 / 6 / 1
Регистрация: 14.11.2008
Сообщений: 82
22.03.2009, 18:27  [ТС] #7
Цитата Сообщение от Vourhey Посмотреть сообщение
clear не очищает поток. Она просто сбрасывает биты.
Игнорирует cin в цикле.
Присоединяюсь сбрасывает биты ошибок состояния входного потока и устанавливает goodбит для потока )) не так выразился.
0
22.03.2009, 18:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2009, 18:27

Поток ввода cin и его очистка(?)
Есть необходимость заполнять поля члены класса в консоли через ввод. Есть...

Не очищается поток после cin.clear()
Собственно есть программа записывающая данные в файл и считывающая их оттудова...

Ввод нескольких значений, поток cin
Привет :) Хотел бы узнать, как можно считать подряд несколько пар значений...


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

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

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