2010-11-02 3 views
-3

Можно создать дубликат:
how do I validate user input as a double in C++?C++: вводят только целые числа/float?

Привет. Как я могу сделать так, чтобы пользователь мог вводить только целые числа/float без перечисления гигантского оператора switch или чего-то еще?

Спасибо.

+4

Вы должны быть более конкретными. Возможно, вы ищете что-то в этом вопросе: http://stackoverflow.com/questions/3273993/how-do-i-validate-user-input-as-a-double-in-c/ – casablanca

ответ

2
int i; 
std::cin >> i; 
if(!std::cin) throw "bloody user blew it!" 

Это некоторые из самых фундаментальных материалов, которые вы узнаете о C++. Возможно, вы захотите получить a good introductory C++ book.

+0

Поскольку ОП, похоже, задает очень простой вопрос, возможно, было бы лучше сформулировать тест как while (std::cin.fail()) { std::cout << "Bad input, try again"; std::cin >> i;}. Мои ключевые моменты состоят в том, что (a) не используют исключения, поскольку OP может быть учеником, просто изучающим основы и (b) использовать fail() явно, а не показывать, как напрямую тестировать поток. – Vatsan

+0

@ Vatsan: (a) этот оператор throw является вехой для реальной обработки ошибок (b) 'fail()' не вернет true, если бит бит установлен, а '! Strm' будет. – sbi

+0

оператор! vs fail() - это не мое понимание - http://www.cplusplus.com/reference/iostream/ios/operatornot/ – Vatsan

Смежные вопросы