2012-06-16 3 views
0

Я пытался читать много цифр динамически с помощью кода ниже следует EOF в конце:тестирует состояние с IStream объектов

vector<double> data; 
double x; 
while (cin >> x) 
{ 
    data.pushback(x); 
} 

этот метод работает прекрасно, но я хотел бы знать, что происходит с выражением ниже

cin >> x 

Да, я знаю, что он используется для ввода данных, но как же я могу проверить условия с ним.
Что происходит с ниже выражением:

while (cin) or if (cin) 

Что cin возвращение?

ответ

3

cin объект класса istream класса, который может быть приведен к void*, а возвращаемое значение является пустой указатель, если произошла ошибка (этот указатель неявно конвертируются в bool).

См. here для справки.

+0

Я не могу сказать, что я понял это полностью, потому что я никогда не знал об объектах, которые были напечатаны в указателях, и я новичок в C++, но ваш ответ дал мне приблизительное представление о том, что происходит. Очень полезно.Thankssssss :) – tez

+0

преобразование в 'void *' является примером [safe bool idiom] (http://www.artima.com/cppsource/safebool.html) –