本人自學c++,在寫程式練手,可是遇到個問題,我覺得程式沒啥問題可就是出問題了:
void Student_Msg::InputData()
{
int p;
char s[41];
cout << "請輸入學生資訊(NO " << num <<")?: \n";
cout << "姓名:";
cin >> s;
name = new char(strlen(s)+1);
strcpy(name, s);
cout << "性別(1.男,0.女):";
cin >>p;
if(p)
sex = true;
else
sex = false;
cin >> date;
cout << endl;
return;
}
cin >> date是一個類物件,會呼叫>>運算子多載函式:
istream &operator >> (istream &in, CDate &d)
{
char ch1, ch2;
cout << "請輸入日期(輸入格式:yyyy-mm-dd):";
while(1)
{
cin >> d.year >> ch1 >> d.month >> ch2 >> d.day;
if(ch1 == '-' && ch2 == '-')
{
cout << “時間格式正確” << endl;
break;
}
else
{
cout << “時間格式不正確,請重新輸入”" << endl;
break;
}
}
return cin
}
主函式是回圈檢測的:
while(!end)
{
cout << menu[0] << endl;
for(i = 0; i < 6; i++)
{
cout << i << " " << menu[i+1] << endl;
}
cin >> input;
switch(input)
{
case 0:
Student_Msg::num++;
Stu[Student_Msg::num].InputData();
break;
}
}
現在的問題是:如果輸入對的時間,主程式會阻塞到cin >> input;等待用戶再次輸入。而如果輸入錯誤時間問題就出現了:
會一直回圈列印:“時間格式不正確,請重新輸入”不會阻塞到cin >> input等待用戶輸入。
這是我一直想不通的,我覺得程式沒問題,而且輸入對的時間,輸入錯的時間處理是一樣的啊:
if(ch1 == '-' && ch2 == '-')
{
cout << “時間格式正確” << endl;
break;
}
else
{
cout << “時間格式不正確,請重新輸入”" << endl;
break;
}
}
return cin
為什么對的時間會阻塞,錯的時間不阻塞一直回圈列印呢?求C++大神指教。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/213036.html
標籤:C++ 語言
下一篇:用c++寫
