C ++ Verificando por um inteiro.
Novo para C ++. Tendo problemas corretamente em loop ao lidar com erros. Eu estou tentando verificar se a entrada do usuário é um inteiro e é positiva.
do{
cout << "Please enter an integer.";
cin >> n;
if (cin.good())
{
if (n < 0) {cout << "Negative.";}
else {cout << "Positive.";}
}
else
{
cout << "Not an integer.";
cin.clear();
cin.ignore();
}
}while (!cin.good() || n < 0);
cout << "\ndone.";
Quando um não inteiro é inserido, o loop é interrompido. Eu sinto que estou entendendo mal o uso inerente decin.clear()
ecin.ignore()
e o status decin
durante este loop. Se eu remover ocin.ignore()
, o loop se torna infinito. Por que é isso? O que posso fazer para tornar isso um loop funcional? Obrigado.