Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2011, 19:16   #1
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию Короткий вопрос. cin

int p;
cin>>p;

что произойдет если ввести букву или строку содержащую буквы?
я знаю что ввод прекратиться и в p ничего записано не будет.

Собственно мне надо просто вывести сообщение об ошибке если кто то введет буквы или строку.
pinkiller вне форума Ответить с цитированием
Старый 16.12.2011, 19:21   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от pinkiller Посмотреть сообщение
int p;
cin>>p;

что произойдет если ввести букву или строку содержащую буквы?
я знаю что ввод прекратиться и в p ничего записано не будет.

Собственно мне надо просто вывести сообщение об ошибке если кто то введет буквы или строку.
Ну а если сам все знаешь, чего тогда спрашиваешь то?)
_Bers вне форума Ответить с цитированием
Старый 16.12.2011, 19:40   #3
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

Вообщем дело такое) В программе которую пишу ввожу подряд 6 значений. дату.
проверить чтобы числа были правильные легко, не меньше нуля. и не больше какого то числа. (60 для секунд и т.д) но если ввести туда буквы, cin просто прекращает свою работу. и я не знаю как отследить ввод букв.
pinkiller вне форума Ответить с цитированием
Старый 16.12.2011, 19:41   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

pinkiller

Собственно мне надо просто вывести сообщение об ошибке если кто то введет буквы или строку.

int p;
if (!(std::cin >> p))
{ std::cerr << "букавки не понимать мая, насяльника!" << std::endl; }
Rififi вне форума Ответить с цитированием
Старый 16.12.2011, 19:50   #5
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от pinkiller Посмотреть сообщение
Вообщем дело такое) В программе которую пишу ввожу подряд 6 значений. дату.
проверить чтобы числа были правильные легко, не меньше нуля. и не больше какого то числа. (60 для секунд и т.д) но если ввести туда буквы, cin просто прекращает свою работу. и я не знаю как отследить ввод букв.
char buf[MAX_BUF];
cin >> buf;

//исследуем буфер. Если пользователь ввёл то, что нам нужно,
//то копируем данные из буфера куда нам нужно, и работаем как обычно
_Bers вне форума Ответить с цитированием
Старый 16.12.2011, 20:17   #6
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

а если у меня не cin а перегруженая функция где используеться is формата istream и обратиться std::is невозможно?
pinkiller вне форума Ответить с цитированием
Старый 16.12.2011, 20:31   #7
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от pinkiller Посмотреть сообщение
а если у меня не cin а перегруженая функция где используеться is формата istream и обратиться std::is невозможно?

что такое std::is ?
_Bers вне форума Ответить с цитированием
Старый 17.12.2011, 14:15   #8
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

переменная типа istream, чтобы перегрузить cin
pinkiller вне форума Ответить с цитированием
Старый 17.12.2011, 16:55   #9
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от pinkiller Посмотреть сообщение
переменная типа istream, чтобы перегрузить cin
Ничего не понял. У меня в 2008 студии вообще похоже отсутствует данное явление.

Что значит "переменная типа istream, что бы перегрузить cin" ?
Интересно глянуть код, где перегружают cin
_Bers вне форума Ответить с цитированием
Старый 17.12.2011, 21:03   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну присвоили вы cin новое значение, и что с того? что нельзя его применить больше?
код из поста 4 работает для любых istream.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
cin.get в while kaljan775 Общие вопросы C/C++ 6 30.09.2010 14:59
Cin _-Re@l-_ Общие вопросы C/C++ 8 25.06.2010 23:17
Короткий повтор сигнала в биосе AWARD D-manF Компьютерное железо 1 24.12.2009 14:28
Как получить короткий путь Д'якон Общие вопросы Delphi 4 12.09.2009 13:16
Короткий вопрос - где можно создать свой сайт Siroga35 Свободное общение 5 22.01.2009 16:23