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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.67
Dani
1300 / 637 / 56
Регистрация: 11.08.2011
Сообщений: 2,280
Записей в блоге: 2
Завершенные тесты: 1
#1

Что делает cin.get - C++

20.09.2012, 21:18. Просмотров 2879. Ответов 28
Метки нет (Все метки)

Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
int main()
{
    int a;
    std::cin >> a; 
    std::cin.putback ('A');
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    std::cout << std::cin.get() << std::endl;
    system ("pause");
    return 0;
}
Почему он не выводит код буквы А? Как я думаю, если ввести сначала "1234i", cin прочтет 1234 и останется буква i. Затем в поток к букве i и переводу строки в ней, добавится буква А. Потом, ignore сотрет все символы вместе с '\n' и останется одна А, которую cin.get и должен вывести (ее код).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2012, 21:18     Что делает cin.get
Посмотрите здесь:

Что делает cin.ignore(); - C++
Поясните мне, какое действие выполняет функция: cin.ignore(); Лучше на примере каком нибудь!(с комментариями) Может быть это что-то...

Что делает метод cin.ignore? - C++
cin.ignore(0,'\n'); Что она делает?

Что делает цикл "while(cin.getline(buf,l_buf))" ? - C++
не могу понять,что делает цикл:while(cin.getline(buf,l_buf))-это по сути проверка на ввод строки? cin.getline()-вводит строку ...

Что не так с оператором cin? - C++
Задание найти сумму первых N чисел из введенных ранее. С помощью оператора cin ввожу числа в вектор, для остановки ввожу символ /,...

Что такое CIN и COUT - C++
фоном звучит вопрос printf и scanf - осмелюсь написать что они используют те же механизмы не знаю покажется ли это кому то интересным,...

Что будет разделителем для строки cin>>? - C++
Что будет разделителем для строки cin&gt;&gt;? (Напр. для «Один два»).

Что делает конструктор? - C++
Я очень плохо понял вобще. Он вроде помогает создать в памяти место для переменных обьявленых в классе?? В каких слуаях его лучше...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
20.09.2012, 22:10     Что делает cin.get #16
Цитата Сообщение от Dani Посмотреть сообщение
igorrr37, а почему такой код выводит 65?
вроде получается он ничего не удаляет из потока и выйдет тоже, что без строки с cin.ignore
Dani
1300 / 637 / 56
Регистрация: 11.08.2011
Сообщений: 2,280
Записей в блоге: 2
Завершенные тесты: 1
20.09.2012, 22:12  [ТС]     Что делает cin.get #17
И почему, если заменить
C++
1
std::numeric_limits<std::streamsize>::min()
на
C++
1
std::numeric_limits<std::streamsize>::max()
, оно просит сделать еще ввод? Удалило все символы, получается?
igorrr37
1644 / 1272 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
20.09.2012, 22:26     Что делает cin.get #18
std::numeric_limits<std::streamsize>::min() - число отрицательное, ignore() с ним ничего не игнорит
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.09.2012, 22:28     Что делает cin.get #19
Получается, что 'A' попадает перед 'i'.
Миниатюры
Что делает cin.get  
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.09.2012, 22:38     Что делает cin.get #20
Цитата Сообщение от Toshkarik Посмотреть сообщение
Dani, после некорректного ввода в переменную а, в потоке устанавливается бит failbit. Дальнейшие операции над потоком нельзя проводить, пока не будет выполнен std::istream::clear.
Как ни странно, делаю после cin >> a; cout << cin.fail(), выводит 0, как будто никакой ошибки не было.
Dani
1300 / 637 / 56
Регистрация: 11.08.2011
Сообщений: 2,280
Записей в блоге: 2
Завершенные тесты: 1
20.09.2012, 22:40  [ТС]     Что делает cin.get #21
alsav22, а у меня 2 выводит)
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.09.2012, 22:58     Что делает cin.get #22
С проверкой на good().
Миниатюры
Что делает cin.get  
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.09.2012, 23:22     Что делает cin.get #23
Ошибка будет, если первый символ не соответствует ожидаемому типу. Если как в данном случае, то ошибки не будет.
Dani
1300 / 637 / 56
Регистрация: 11.08.2011
Сообщений: 2,280
Записей в блоге: 2
Завершенные тесты: 1
20.09.2012, 23:33  [ТС]     Что делает cin.get #24
что-то я запутался
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.09.2012, 23:39     Что делает cin.get #25
Цитата Сообщение от Dani Посмотреть сообщение
что-то я запутался
В трёх соснах? Вопрос возник из-за putback (). Сам не знал, что он помещает символ первым в очереди.
Dani
1300 / 637 / 56
Регистрация: 11.08.2011
Сообщений: 2,280
Записей в блоге: 2
Завершенные тесты: 1
21.09.2012, 00:03  [ТС]     Что делает cin.get #26
Цитата Сообщение от alsav22 Посмотреть сообщение
В трёх соснах?
Dani, после некорректного ввода в переменную а, в потоке устанавливается бит failbit. Дальнейшие операции над потоком нельзя проводить, пока не будет выполнен std::istream::clear.
Как ни странно, делаю после cin >> a; cout << cin.fail(), выводит 0, как будто никакой ошибки не было.
вроде получается он ничего не удаляет из потока и выйдет тоже, что без строки с cin.ignore
Вместо сосен - ответы)
alsav22
21.09.2012, 00:36
  #27

Не по теме:

Цитата Сообщение от Dani Посмотреть сообщение
Вместо сосен - ответы)
Не один вы путаетесь.

Dani
1300 / 637 / 56
Регистрация: 11.08.2011
Сообщений: 2,280
Записей в блоге: 2
Завершенные тесты: 1
21.09.2012, 00:46  [ТС]     Что делает cin.get #28
Так все таки, будет ошибка ввода, или нет?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2012, 00:53     Что делает cin.get
Еще ссылки по теме:

Что делает операция >>? - C++
что значит знак &quot;&gt;&gt;&quot;? Например: d = zt &gt;&gt; 15

Что делает программа - C++
Объясните пожалуйста пошагово что делает эта программа #include &lt;stdio.h&gt; #include &lt;fstream&gt; #include &lt;iostream&gt; using...

Что делает функция? - C++
void countFrequency( const std::string &amp; str, int *frequency ) //принимаем строку, и указатель на интовый массив { int idx; ...

_splitpath что делает? - C++
Что такое, с чем его едят, когда применяется и о параметрах.

что делает функция? - C++
int slength ( char*str){ int Len = -1; while (++len, *str++); return len; } возвращает длину строки? Добавлено через 42...


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.09.2012, 00:53     Что делает cin.get #29
Цитата Сообщение от Dani Посмотреть сообщение
Так все таки, будет ошибка ввода, или нет?
23 пост. Скрины подтверждают.

Добавлено через 2 минуты
Поставьте после cin >> проверку на good() и сами посмотрите. Введите сразу символ.
Yandex
Объявления
21.09.2012, 00:53     Что делает cin.get
Ответ Создать тему
Опции темы

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