入れたときにプログラムが問題なく動作するのはなぜcin.clear()
ですかcin.ignore()
。たとえば、入れてchars
もプログラムにバグはありません。
しかし、cin.ignore()
最初に thenを入力cin.clear()
すると、プログラムはエラー信号の送信を停止しません。
これはどのように作動しますか?
入力を消去してfail flag
設定を解除すべきではありませんか?
#include <iostream>
using namespace std;
class time
{
private:
int hours;
public:
void getime()
{
do
{
cout << "Enter hours: ";
cin >> hours;
if ( hours < 0 || hours > 23 || cin.fail() )
{
cin.clear();
cin.ignore(10,'\n');
cerr << "invalid time, minutes must be between 0 and 59 " << endl;
}
}while(hours<0 || hours>23);
}
};
int main()
{
time asd;
asd.getime();
return 0;
}