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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.67
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
20.09.2012, 21:18     Что делает cin.get #1
Вот код:
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 и должен вывести (ее код).
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
20.09.2012, 22:40  [ТС]     Что делает cin.get #21
alsav22, а у меня 2 выводит)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.09.2012, 22:58     Что делает cin.get #22
С проверкой на good().
Миниатюры
Что делает cin.get  
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.09.2012, 23:22     Что делает cin.get #23
Ошибка будет, если первый символ не соответствует ожидаемому типу. Если как в данном случае, то ошибки не будет.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
20.09.2012, 23:33  [ТС]     Что делает cin.get #24
что-то я запутался
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.09.2012, 23:39     Что делает cin.get #25
Цитата Сообщение от Dani Посмотреть сообщение
что-то я запутался
В трёх соснах? Вопрос возник из-за putback (). Сам не знал, что он помещает символ первым в очереди.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 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
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 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++ Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами
Что делает метод cin.ignore? C++
C++ Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear()

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 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
Ответ Создать тему
Опции темы

Текущее время: 11:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru