我要求用戶通過輸入對應項目的整數選擇在一個揹包裏的物品之間進行選擇。但是,儘管我使用了當前的整數輸入驗證代碼,但整個程序終止而不是重新顯示選項並要求用戶再次輸入選項。下面的代碼中是否有任何問題可能導致此問題?程序終止,而不是繼續整數輸入確認循環
int num;
do{
std::cout << "Choose item to use." << std::endl;
for(int i = 0; i < backpack->size(); i++){
std::cout << i+1 << ". " << backpack->at(i) << std::endl;
};
std::cin >> num;
if(!std::cin.fail()){
if(num < 0 || num > (backpack->size())){
std::cout << "Plese enter an integer in range." <<std::endl;
}else{
break;
};
}else{
std::cin.clear();
std::cin.ignore(80, '\n');
std::cout << "Invalid input. Please enter an integer." << std::endl;
};
}while(std::cin.fail() || (num<0 || num > (backpack->size())));
這聽起來像你可能需要學習如何使用調試器來逐步執行代碼。使用一個好的調試器,您可以逐行執行您的程序,並查看它與您期望的偏離的位置。如果你打算做任何編程,這是一個重要的工具。延伸閱讀:如何調試小程序(http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) – NathanOliver
方案是否終止* *('的std :: terminate' )或者只是循環結束? –
也請不要害怕空格。你的代碼很難閱讀,因爲你似乎不喜歡空格和空白喜歡 –