当我尝试给出像“Hello”这样的字符串输入时,它会产生错误。当我给出字符串输入字符串时,如何检查它是否应该让我给出正确的输入?
int y,m,d,h,min,s;
do
{
cout<<" Please enter the year: ";
cin>>y;
}while(y < 1970 || y > 2020);
答案 0 :(得分:1)
如果输入无法转换为int
(在您的情况下),则failbit
将设置为std::cin
。这可以通过调用cin.fail()
来检索。
std::cin >> y;
if (std::cin.fail()) {
std::cout << "data entered is not of int type";
}
您也可以使用!std::cin
代替std::cin.fail()
。
答案 1 :(得分:1)
#include "iostream"
#include<limits>
using namespace std;
int input()
{
int y;
do
{
std::cin.clear();
std::cin.ignore(numeric_limits<streamsize>::max(), '\n');
std::cout << "Give the year" << std::endl;
std::cin >> y;
}
while (std::cin.fail() || y < 1970 || y > 2020);
return y;
}
main()
{
int x = input();
}