C/C++ ošetření vstupu
Napsal: úte 30. čer 2009, 22:59
Zdravím,
když použiju v konzolové aplikaci int a; cin >> a; a uživatel zadá písmenko, tak jsem chybu detekoval pomocí metody cin.fail() resp. !cin.good() a v příslušné podmínce provedl cin.clear() ale i přesto se mi další požadavky na vstup v případě této chyby ignorují, a program doběhne do konce/spadne. Jak zařídit, abych std::cin dostal do původního stavu a mohl ho dále použít pro načtení hodnot?
Toto se mi zacyklí právě kvůli následnému přeskočení požadavku na vstup
int a;
cout << "zadej cislo:";
cin >> a;
while(cin.fail())
{
cin.clear();
cin >> a;
}
Předem díky za nápady.
když použiju v konzolové aplikaci int a; cin >> a; a uživatel zadá písmenko, tak jsem chybu detekoval pomocí metody cin.fail() resp. !cin.good() a v příslušné podmínce provedl cin.clear() ale i přesto se mi další požadavky na vstup v případě této chyby ignorují, a program doběhne do konce/spadne. Jak zařídit, abych std::cin dostal do původního stavu a mohl ho dále použít pro načtení hodnot?
Toto se mi zacyklí právě kvůli následnému přeskočení požadavku na vstup
int a;
cout << "zadej cislo:";
cin >> a;
while(cin.fail())
{
cin.clear();
cin >> a;
}
Předem díky za nápady.