std::cin.clear() fails to restore input stream in a good state

前端 未结 3 866
心在旅途
心在旅途 2021-01-22 12:04

In order to test bool i/o, I tried to run this short program:

#include 

int main()
{
 while(true)
 {
  bool f;
  if (std::cin >> f)
   std         


        
3条回答
  •  刺人心
    刺人心 (楼主)
    2021-01-22 12:35

    Try to use following combo:

    cin.ignore(INT_MAX, '\n'); // ignore all characters in the current line
    
    cin.clear(); // restore 'good' flag
    

    Using only cin.ignore() will discard only one character in the buffer.

提交回复
热议问题