c++的while循环问题

c++ do while loop issues

本文关键字:问题 循环 while c++      更新时间:2023-10-16

我有下面的if语句来确保日期输入是有效的。但是,如果有人两次输入无效的日期,它就会保留该值。在继续前进之前,我如何确保日期是有效的?while循环?

cin>>date.day;
    if((date.day>31) || (date.month<1))
      {
          cout <<"Please input a valid day."<< endl;
          date.day = 0;
          cin>>date.day;
      }

使用do while结构:

do {
  cout <<"Please input a valid day."<< endl;
  date.day = 0;
  cin>>date.day;
  if (cin.fail()) {
    cin.clear();
    cin.ignore(1024, 'n');
  }
} while(cin.fail() || date.day > 31 || date.day < 1);

您正在寻找的是while循环:

cin>>date.day;
while((date.day>31) || (date.month<1))
{
    cout <<"Please input a valid day."<< endl;
    date.day = 0;
    cin>>date.day;
}