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

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

Войти
Регистрация
Восстановить пароль
 
templas
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 19
#1

cin.get() - C++

14.01.2014, 22:15. Просмотров 319. Ответов 5
Метки нет (Все метки)

Здравствуйте! Пожалуйста объясните мне почему не получается обойтись обычным cin ? Почему именно cin.get()?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream> 
#include <conio.h>
using namespace std;
 
int main() 
{
    setlocale(LC_ALL,"Rus");
 
    int a;
 
    while(!(cin >> a))
    {
        cin.clear();
        cout << "try again ";
        while (cin.get() != '\n');
    }
 
 
    _getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2014, 22:15     cin.get()
Посмотрите здесь:

While(cin) - C++
Здравствуйте, помогите разобраться с данной функций. Много раз видел её употребление, но так и не понял, как она работает. Желательно с...

cin и \n - C++
Добрый день. Существует ли какой-то механизм, который позволяет узнать перепрыгнул ли cin через \n. что я имею в виду. this is ...

a=get.cin() и get.cin(a) - C++
Подскажите, в чем разница между a=get.cin() и get.cin(a)?

Cin.get - C++
Как сделать чтобы cin.get считывал числа а не символы, т.е. вот код { int a, b, c; int i; int z; for(i=0;...

Cin.get() - C++
Почему: cin.get(X1,ArkSin); cin.get(X2,ArkSin); НЕ правильно работает, А cin.get(X1,ArkSin); cin.get(); ...

cin.get - C++
почему не работает cin.get у Borland C++ 3.01? необходимую директиву подключил: iostream.h?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.01.2014, 22:22     cin.get() #2
Цитата Сообщение от templas Посмотреть сообщение
почему не получается обойтись обычным cin ?
Обычный - это какой? Такой: cin >> ? Такой не всё читает (первые пробельные символы пропускает), и читает до первого пробельного символа, а cin.get() всё читает без пропусков.
HighPredator
5474 / 1840 / 342
Регистрация: 10.12.2010
Сообщений: 5,431
Записей в блоге: 3
14.01.2014, 22:27     cin.get() #3
Исходя из логики цикла. Цикл работает пока не будет нажата клавиша Enter. Просто cin-ом вы это не поймаете.
templas
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 19
14.01.2014, 22:27  [ТС]     cin.get() #4
Цитата Сообщение от alsav22 Посмотреть сообщение
Обычный - это какой? Такой: cin >> ? Такой не всё читает (первые пробельные символы пропускает), и читает до первого пробельного символа, а cin.get() всё читает без пропусков.
Да именно. почему нельзя так?

C++
1
2
3
4
5
6
while(!(cin >> a))
    {
        cin.clear();
        cout << "try again ";
        cin >> a;
    }
Я ввожу букву вместо целого числа у меня происходит зацикливание. В чем проблема?
HighPredator
5474 / 1840 / 342
Регистрация: 10.12.2010
Сообщений: 5,431
Записей в блоге: 3
14.01.2014, 22:35     cin.get() #5
Цитата Сообщение от templas Посмотреть сообщение
В чем проблема?
В том, что вы напрочь не понимаете, что код делает. По поводу get смотрите мой пост выше.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2014, 22:48     cin.get()
Еще ссылки по теме:

cin - C++
есть переменная a типа инт! cin&gt;&gt;a; как сделать чтобы при нажатии энтера. переменной присваивалось какое либо значение?

cin.get() - C++
Элементарный вопрос. объясните пожалуйста разницу между : char name; cin.get(name);//c одним параметром и const int size =...

cin - C++
Что не так? Сильно не кpичать. Cin юзаю пеpвый pаз. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int...

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

не работает Cin - C++
#include &lt;iostream&gt; using namespace std; class Deposit{ private: string...

Cin зацикливание - C++
Здравствуйте, столкнулся с такой проблемой: int a; bool b = true; while(b) { cout &lt;&lt; &quot;\nEnter value&quot; &lt;&lt; endl;...


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.01.2014, 22:48     cin.get() #6
Цитата Сообщение от templas Посмотреть сообщение
Я ввожу букву вместо целого числа у меня происходит зацикливание. В чем проблема?
При ошибке в потоке невведённое остаётся в очереди ввода, которую нужно очистить. Вот эта конструкция делает очистку (извлекает все введённые символы вместе с '\n'):
C++
1
while (cin.get() != '\n');
Добавлено через 2 минуты
У вас же, при следующем чтении, опять считается буква, опять ошибка в потоке, cin.clear() сделает поток рабочим, опять считается буква, опять ошибка и т.д.
Yandex
Объявления
14.01.2014, 22:48     cin.get()
Ответ Создать тему
Опции темы

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