cin.eof () функциональность

Я понимаю, что cin.eof () проверяет формат потока. И давая ввод, конец символа не достигается, если ввод неверен. Я тестировал это на моем MSV C ++ 2010 и не понимаю странных результатов. Независимо от того, что я ввожу, я получаю сообщение Ошибка формата , которое присутствует в программе.

#include <iostream>
using namespace std;

int main()
{
    int i;
    cin>> i;

    if(!cin.eof())
    {
        cout<< "\n Format Error \n";
    }
    else
    {
        cout<< "\n Correct Input \n";
    }

    getchar();
    return 0;
}

Результаты, которых я ожидал:

Значения для i =

  1. 10 => Правильный ввод , но на выходе - Ошибка формата
  2. 12a => Ошибка формата

Может ли кто-нибудь объяснить, в чем я ошибаюсь. Спасибо.

8
задан Mahesh 8 February 2011 в 22:27
поделиться