2013-03-11 2 views
1

У меня есть следующий код. Когда вводится что-то вроде jackpot, он выдает cout 8 раз, один раз для каждого символа. Почему он это делает? Информация - это структура, а число - целое число.C++ while loop repeats

do { 
     cout <<"Please input a valid number."<< endl; 
     cin>>information.number; 
     if (!cin) 
      { 
      cin.clear(); 
      cin.ignore(); 
      } 
    } 
while(information.number> 12 || information.number< 1); 
+2

Посмотрите еще: http://en.cppreference.com/w/cpp/io/basic_istream/ignore – chris

ответ

1

Вы можете задать максимальную длину игнорировать длину и игнорировать delimiter:

do { 
     cout <<"Please input a valid number."<< endl; 
     cin>>information.number; 
     if (!cin) 
      { 
      cin.clear(); 
      cin.ignore(1024, '\n'); // ignore up to 1024 chars. until '\n' 
      } 
    } 
while(information.number> 12 || information.number< 1);