Stránka 1 z 1

C/C++ ošetření vstupu

Napsal: úte 30. čer 2009, 22:59
od kybrex
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.

Re: C/C++ ošetření vstupu

Napsal: pát 3. črc 2009, 01:08
od kybrex
Vyřešeno.
Zapoměl jsem na cin.ignore(...); - je třeba přeskočit chybná data na vstupu, jinak se budou chtít načíst znovu a zacyklí se to.