Pierwsze pytanie - istnieją metody std::cin.good() oraz std::cin.false(). Pierwsza metoda zwraca true, jeśli ostatnia operacja wproawdzania cin, wykonała się poprawnie. Analogicznie false zwraca true jeśli wykonała się źle. Oczywiście musimy też czyścić bufor błędu metodami std::cin.clear() oraz std::cin.sync().
Przykładowy kod:
/* jakis kod */
int x;
while( true )
{
std::cout << "Podaj liczbe:";
std::cin >> x;
if( std::cin.good() )
break;
else
{
std::cout << "Miales podac liczbe matolku!" << std::endl;
std::cin.clear();
std::cin.sync();
}
}
Odpowiedzią na drugie pytanie może być funkcja getch() z biblioteki conio.h
Przykładowe użycie:
#include<iostream>
#include<conio.h>
int main( void )
{
int Klawisz;
for( ; ; )
{
Klawisz = getch();
switch( Klawisz )
{
case 72:
std::cout << "Do gory!" << std::endl;
break;
case 80:
std::cout << "W dol!" << std::endl;
break;
case 75:
std::cout << "W lewo!" << std::endl;
break;
case 77:
std::cout << "W prawo!" << std::endl;
break;
}
}
return 0;
}
Pozdrawiam!