/** * @brief The quick-and-easy status check. * * This allows you to write constructs such as * "if (!a_stream) ..." and "while (a_stream) ..."*/operator void*() const{ return this->fail() ? 0 : const_cast (this); }
如果你把一个basic_ios类的对象(cin就是)放到if语句的括号里,它就会被转换成void*型。如果输入失败的话,就会得到一个空指针(也就是0),那么if语句就不能通过。
#include #include using namespace std;int main(){ int i; do { cout< < >i);}
首先输出个0.之后输入X,输出X;当输入ctrl+d时,没有输出,结束。
#include #include using namespace std;int main(){ int i; do{ cin>>i; cout< <
输入x,输出x;当输入ctrl+d时,再输出个上一次的输入量,结束。
ctrl+d表示表示输入错误。
cin.clear()可以重新将cin置为有效。
导致循环终止的原因是流对象cin进入错误状态:系统输入级故障;读入了无效数据;遇到文件结束符。
下面是一个用到cin判断作为循环条件的程序:
#include #include #include #include