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

Поток cin - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 74, средняя оценка - 4.89
Alexen
5 / 5 / 0
Регистрация: 14.11.2008
Сообщений: 77
20.03.2009, 11:01     Поток cin #1
Ребят подскажите почему после того как в цикле для потока 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; игнорируется
и как это исправить?? зарание СПС.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
20.03.2009, 11:16     Поток cin #2
Используй поиск. На форуме уже есть точно такая же тема. В ней ответ.

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

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

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

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

C++
1
2
3
4
5
while(cin >> client) выход через Ctrl+z
{.....}
cin.clear(); очистить поток и затем выставить позиционирование в 0
cin.seekg(0);
cin >> x; работает
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
22.03.2009, 17:20     Поток cin #6
clear не очищает поток. Она просто сбрасывает биты.
Игнорирует cin в цикле.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2009, 18:27     Поток cin
Еще ссылки по теме:

C++ Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами
C++ Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear()
C++ Как читает поток ввода cin ?
C++ Метод getline(cin, m) не срабатывает без cin.ignore() / Ревью кода
C++ Поток ввода cin и его очистка(?)

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

Или воспользуйтесь поиском по форуму:
Alexen
5 / 5 / 0
Регистрация: 14.11.2008
Сообщений: 77
22.03.2009, 18:27  [ТС]     Поток cin #7
Цитата Сообщение от Vourhey Посмотреть сообщение
clear не очищает поток. Она просто сбрасывает биты.
Игнорирует cin в цикле.
Присоединяюсь сбрасывает биты ошибок состояния входного потока и устанавливает goodбит для потока )) не так выразился.
Yandex
Объявления
22.03.2009, 18:27     Поток cin
Ответ Создать тему
Опции темы

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