|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.07.2013, 08:46 | #1 |
Форумчанин
Регистрация: 17.03.2012
Сообщений: 105
|
cin.ignore()
Добрый день. Читаю книгу, имеется такой вот код:
Код:
Почитал про cin.ignore(). Написано, что он считывает до 10 символов, либо до '\n' и исключает их из потока. Я не понимаю, что означает "исключает из потока". Ведь если выполняется cin.good(), то в моем понимании число исключается из потока и в поток ничего передаваться не должно (ведь значение было исключено). Тем не менее на выходе из программы мы получаем наше число. Помогите, пожалуйста, разобраться. Последний раз редактировалось Dima-War; 13.07.2013 в 08:49. |
13.07.2013, 15:48 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
cin.good() лишь проверяет состояние флагов, и ничего не делает с входным буфером.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
13.07.2013, 16:03 | #3 |
Форумчанин
Регистрация: 17.03.2012
Сообщений: 105
|
Нет, я понимаю. Просто когда выполняется условие, то по идее cin.ignore() исключает введенное число из потока. Так почему тогда мы получаем его на выходе из программы?
|
13.07.2013, 16:24 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
число сначала считывается, и лишь потом исключается то что осталось в потоке.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
13.07.2013, 17:17 | #5 |
Форумчанин
Регистрация: 17.03.2012
Сообщений: 105
|
Ок, тогда зачем в условии мы используем cin.ignore()? Ведь по большому счету оно нам ничего не дает. Или я не прав?
|
13.07.2013, 19:23 | #6 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
а если вы имеете в виду истиную ветку ифа, то там она чистит буфер за собой, от лишних символов ввода и самого символа переноса строки(а то с ним бывает морока) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
13.07.2013, 21:58 | #7 |
Форумчанин
Регистрация: 17.03.2012
Сообщений: 105
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Insert IGNORE | Dozent | БД в Delphi | 13 | 04.01.2013 11:12 |
зачем нужен svn:ignore | sashonk | Общие вопросы по Java, Java SE, Kotlin | 0 | 03.11.2012 21:54 |
изза cin.ignore() не записывает 1 символ | PotatoCaptain | Visual C++ | 2 | 09.01.2012 07:10 |
ignore empty cells | Olya1985 | Microsoft Office Excel | 17 | 03.01.2011 18:36 |
Кнопочка Ignore this exception type работает колько для конкретного проекта? Или сразу для всех? | TwiX | Общие вопросы Delphi | 4 | 12.06.2010 19:00 |