С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 74, средняя оценка - 4.89
Alexen
6 / 6 / 0
Регистрация: 14.11.2008
Сообщений: 82
#1

Поток cin - C++

20.03.2009, 11:01. Просмотров 8933. Ответов 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 (C++):

Поток ввода cin - C++
Привет. Я только начинаю учить C++, так что не смейтесь если проблема примитивная, но всё равно прошу помочь :) Учусь по книге...

Запись в поток cin >> - C++
Люди добрые подскажите где взять инфу по функциям для ввода/вывода и форматирования. Например, что бы это значило: cout &lt;&lt;...

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

Как читает поток ввода cin ? - C++
Спасибо большое, разобрался. Возникли новые вопросы: 1) как читает поток ввода оператор cin ? Например: char a,b; ...

Поток ввода cin и его очистка(?) - C++
Есть необходимость заполнять поля члены класса в консоли через ввод. Есть следующий отдельный класс, который и занимается этим делом: ...

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

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

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

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

Присоединяюсь к вопросу. У меня получилось реализовать только выносом cin в отдельную функцию. Но это ИМХО извращение.
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,536
21.03.2009, 17:56 #4
Там нет ответа для тех, кто искать не может и читать тоже. Тут была тема, в которой я объяснил почему и что происходит. Самому мне искать ее влом.
0
Alexen
6 / 6 / 0
Регистрация: 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
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,536
22.03.2009, 17:20 #6
clear не очищает поток. Она просто сбрасывает биты.
Игнорирует cin в цикле.
0
Alexen
6 / 6 / 0
Регистрация: 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 работает сам по себе - C++
Привет :) Написал программу, забыл поставить после условия строку для ввода символов cin. Но он работает и так без меня. Т.е. я ввожу...

два вопроса по С++,вопрос про заг.файла и поток cin - C++
1.У меня есть заголовoчный файл,созданный в проекте А,в проекте В он нужен,как его туда добавить?Надо самим файл из папку в папку...

Почему портится поток cin при использовании функции getline - C++
char a; cin.getline(a,5); cin.clear(); При вводе свыше 5 символов после функции getline надо вызывать функцию clear() иначе...

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync - C++
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная &quot;защита от дурака&quot; на ввод. Не пойму предназначение cin.get() !=...


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

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

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