30/09/2018, 18:32

Cần giải thích về hàm kiểm tra số nguyên

Mình có một đoạn code để kiểm tra xem đã nhập số nguyên hay chưa.
Code nay minh thay tren group face c++ thay hay hay.
theo minh hieu la trong khi hien thi "Enter a Number: " va gia tri nhap vao khong phai la kieu int (vi n khai bao la int) thi tiep tuc vong lap. vay nhung cau lenh std::cin.clear() va cin.ignore(1024,’ ’) dung de lam gi?

#include <iostream>

int main() {
	int n;
	while (std::cout << "Enter a Number: " && !(std::cin >> n)) {
		std::cin.clear();
		std::cin.ignore(1024, '
');
		std::cout << "This is not a number!
";
	}
	return 0;
}
tvp viết 20:46 ngày 30/09/2018

Theo mình biết thì std::cin.clear() dùng để xóa cờ báo lỗi trong std::cin (cờ báo lỗi được thiết lập nếu câu lệnh std::cin>>n xảy ra lỗi), và những lỗi này vẫn nằm trong std::cin chứ không mất đi. Cho nên cần phải dùng hàm std::cin.ignore(1024,’\n’) để bỏ qua 1024 phần tử (có thể có những phần tử lỗi) trong buffer để xuống dòng tiếp theo

Bài liên quan
0