2016-08-11 9 views
2

からCIN無限ループ以下のコードをお読みください。 std::cin.ignoreは入力ストリームを空白にし、std::cin.clearは通常の状態に戻すと考えました。なぜ無限ループが起こるのですか?デフォルトではのstd ::無効な入力

+6

最初に「クリア」。秒を無視する。 –

答えて

2

は、std::basic_istream::ignore()は1つのだけの文字を無視します:

あなたのケースのための

より慣用的な使用があっ例から1であると思われる(http://en.cppreference.com/w/cpp/io/basic_istream/ignoreから)

basic_istream& ignore(std::streamsize count = 1, int_type delim = Traits::eof()); 

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 

また、ignore()コールの前にclear()に電話をかけたいので、入力抽出ignore()はすぐに戻るのではなく、成功します。

+0

それは私の問題を解決しました。どうもありがとうございました! –

関連する問題