Khi tôi nhập vào một giá trị chính xác (một số nguyên) nó là tốt. Nhưng khi tôi nhập vào một nhân vật, tôi nhận được một vòng lặp vô hạn. Tôi đã xem xét mọi mặt của mã này và không thể tìm thấy một vấn đề với nó. Tại sao chuyện này đang xảy ra? Tôi đang sử dụng g ++ 4.7 trên Windows.Tại sao mã này cung cấp cho tôi một vòng lặp vô hạn?
#include <iostream>
#include <limits>
int main()
{
int n;
while (!(std::cin >> n))
{
std::cout << "Please try again.\n";
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.clear();
}
}
Input: x
Output:
có một ký tự không thể in được như CR đi kèm với đầu vào khi bạn nhập hoặc không 'cin' lấy một ký tự? –
Chỉ cần sử dụng 'scanf'. Cách dễ dàng hơn và rõ ràng hơn. –
@Joker_vD Nhưng tôi nghĩ đây là C++ ... –