我在執行代碼時發生了一些麻煩。 這是關於一個接口類,用於驗證用戶輸入的值。我使用Visual Studio 2012執行Do-While循環期間錯誤的值C++
int Interface::requestOption(){
int option; //El problema está aquí
do{
cout<<"--------------------------------"<<endl;
cout<<"Type an option...";
cin>>option;
if(option<1 || option>8){
cout<<"Invalid value, type again "<<endl;
Sleep(2000);
system("cls");
menu();
}
}while(!(option>0 && option<9));
return option;
}
如果我使用的方法是第一次,它返回其實我鍵入的值。但是當我再次調用它時,我調試時,我注意到選項的值是-893453,並且它不允許我鍵入另一個數字(cin >>選項不起作用)。
的方法被調用到下一個方法中的互動:
void Control::studentsControl(){
int op;
do{
system("cls");
interEst->menu();
op = interEst->requestOption();
Lista<Students>* students= NULL;
students = U->getStudents();
switch(op){
//Eight options
//The 8th option is to return to the previous menu.
}while(op != 8);
}
實際輸入是什麼?如果流由於輸入無效而被設置爲失敗狀態,則可能需要調用'cin.clear()'。 –
當在「無效值」之後打印'option'的實際值時,簡化版本在我的手中工作(順便說一句,告訴用戶什麼是無效值是個好主意!)。去掉了Sleep(),system(),menu()調用。常見問題:「哪個平臺,哪個編譯器?」也適用。 –
我編輯了這個問題,以便您可以看到在哪個上下文中調用該方法。 @ user465139 – artavia23