Chào các anh/chị, e cần hỏi về việc bắt lỗi trong cin khi nhập sai kiểu dữ liệu, với đoạn code như sau:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
int x;
cout << "Enter a number: ";
cin >> x;
while(std::cin.fail()) {
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
cout << "Bad entry. Enter a NUMBER: ";
cin >> x;
cout << cin.good();
}
std::cout << "x = " << x << std::endl;
return 0;
}
Với đoạn code như trên thì khi nhập input sai cho x là “fasdfsdf” hoặc “fsdafsdf12323” thì sẽ bắt nhập lại, nhưng khi input là “123213fdffddf” thì không hề có lỗi, cin.good() lúc này trả về 1 và hàm tiếp tục chạy. Cho e hỏi là kiểm soát trường hợp này thế nào?