Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
bambique
1 / 1 / 3
Регистрация: 02.04.2015
Сообщений: 169
1

Объект cin

12.11.2015, 00:55. Просмотров 829. Ответов 3
Метки нет (Все метки)

Читаю книгу и встретил такой кусок кода:
C++
1
2
3
4
5
6
7
8
9
10
11
 for(int i =0;i<ArSize;i++)
    {
        cout<<i+1<<": ";
        cin.get(temp,MaxLen);
        while(cin && cin.get()!='\n')
            continue;
        if(!cin || temp[0]=='\0')
            break;
        else
            sayings[i] = temp;
    }
У меня сразу несколько вопросов, в каких случаях объект cin возвращает False? Зачем я очищаю буфер ввода до символа конца строки( насколько я помню если cin некорректно срабатывает, если вместо числа ввести символы, то поток будет заблокирован и сначала нужно вызвать cin.clear() ).
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2015, 00:55
Ответы с готовыми решениями:

Объект cin и его метод cin.get()
Вот код программы: #include &lt;iostream.h&gt; #pragma hdrstop ...

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

Объект cin
Как сделать так,чтобы после cin шла строка,например есть строка cout &lt;&lt; &quot;Enter your height in futs...

объект cin
Добрый день. скажите как попасть в ретерн, если поток идет с консоли? if(!cin.get(ch)) return...

Предопределенный объект cin
В классе iostream перегружена операция приведения объекта к типу bool? int x; while (cin &gt;&gt; x)...

3
AntonIv
21 / 15 / 6
Регистрация: 19.10.2015
Сообщений: 61
12.11.2015, 01:06 2
cin - возвращает false при наличии ошибки.
cin.clear() - просто сбрасивает состояние ошибки, буфер не очищаеться
0
bambique
1 / 1 / 3
Регистрация: 02.04.2015
Сообщений: 169
12.11.2015, 01:08  [ТС] 3
Цитата Сообщение от AntonIv Посмотреть сообщение
cin - возвращает false при наличии ошибки.
cin.clear() - просто сбрасивает состояние ошибки, буфер не очищаеться
Что будет в буффере если возникнет ошибка? Весь введенный текст? Что может вызвать ошибку? Зачем в данном случае эти строчки:
C++
1
2
while(cin && cin.get()!='\n')
            continue;
0
AntonIv
21 / 15 / 6
Регистрация: 19.10.2015
Сообщений: 61
12.11.2015, 01:12 4
Лучший ответ Сообщение было отмечено bambique как решение

Решение

Цитата Сообщение от bambique Посмотреть сообщение
C++
1
while(cin && cin.get()!='\n') continue;
если нет ошибки ввода то читаем все символи пока не прочитаем символ новой строки.. - такой метод очищения буфера

Добавлено через 2 минуты
C++
1
cin.get(temp,MaxLen);
если у тебя здесь прочитаються не все символи из буфера то нужно будет очистить его в том цикле

например если
MaxLen = 5;
а ти ввел 10 символов, то прочитаються только 5, а остальние останутся в буфере.. - будуть прочитани в следуйщий раз, если не очистить буфер
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2015, 01:12

Объект cin и класс istream
В учебнике приводиться такое задание: &quot;Напишите функцию, получающую и возвращающую ссылку на...

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

Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear()
Такая проблема: сдаю в вуза лабораторные по программированию, писал все сам, до этого c++ не...


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

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

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