循环中的延迟流无效

Delayed stream invalidation in a loop

本文关键字:无效 延迟 循环      更新时间:2023-10-16

一个程序通过cin读取int值并显示其计数。cin用作while循环测试。

奇怪的是,即使没有一个非整合输入,循环会增加计数,即即使在流中流无效后,循环至少执行一次。

换句话说,用于输入

2.53

ouput是

1

按照 c 底漆,5e,lippman,lajoie,moo

当我们使用iStream作为条件时,效果是测试 溪流。如果流有效 - 也就是说,如果流尚未遇到错误,则 测试成功。当我们碰到文件终止或相遇时,iStream变得无效 无效的输入,例如读取不是整数的值。一个融合 无效状态会导致条件产生错误。

由于试图读取双重时流无效,为什么循环无论如何都会执行,然后仅在下一次迭代中退出?

代码

#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
    int a;
    int count = 0;
    while (cin >> a)
        cout << ++count << endl;
    return 0;
}

初学者,因此对任何帮助都得到完全赞赏。

这是因为它成功地将2.532部分读取到a中。然后,它再次回转,尝试使用.进行操作,然后退出循环。

,如果您还记录了读取的内容,即:

,您可以看到此操作。
while (cin >> a)
{
    cout << a << " " << ++count << endl;
}