程序通过int
读取cin
个值并显示其计数。 cin
用作while
循环测试。
奇怪的是,即使使用非整数输入,循环也会增加计数,即,即使在退出流之前使流无效之后,循环也至少执行一次。
换句话说,输入
2.53
输出是
1
根据Lippman,Lajoie,Moo的 C ++ Primer,5e
当我们使用istream作为条件时,其作用是测试状态 流。如果流有效(即流未遇到错误),则 测试成功。当我们遇到文件结尾或遇到错误时,istream变得无效 无效的输入,例如读取不是整数的值。位于其中的istream 无效状态会导致条件产生错误。
由于在尝试读取double时流无效,为什么循环仍然执行,然后仅在下一次迭代中退出?
代码
#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;
}
初学者,因此将对您的帮助深表感谢。
答案 0 :(得分:7)
这是因为它成功地将stdout = sys.stdout
def filter_boring_stuff_out(line):
if line.startswith('ignore'):
return
print(line, file=stdout)
的{{1}}部分读入2
。然后,它再次循环回去,尝试对2.53
进行操作,然后退出循环。
如果您还记录了所读内容,即可以看到它的作用:
a