我对发生的事情有点困惑,我正在玩“Accelerated C++”中的一些程序,并且在其中一个早期程序中遇到了问题(第 35 页,如果您附近碰巧有一个副本)。
它使用这个片段:
while (cin >> x) {
++count;
sum += x;
}
(“count”是整数,“x”是双精度)
它按预期工作,允许我输入多个值并将它们加在一起,但我无法弄清楚“文件结束”信号出了什么问题。书上说循环会一直运行,直到程序遇到文件结束信号,在windows中是ctrl+z。
这一切都很好,并且可以工作,但是我的程序将不允许我再次使用 cin。我通常只是设置一个程序来等待一些随机变量,以便在执行后立即停止控制台关闭(顺便问一下,有更好的方法吗?)这就是我注意到这一点的方式,我想知道如果有解决办法的话。我做了很多搜索,但发现几乎没有说明书中已经说过的内容(按 ctrl+z,或输入不兼容的输入类型等)
我使用 Visual Studio 2008 Express 进行编译。
从一个角度来看,一旦到达输入流的末尾,那么根据定义,流中就没有任何内容了,因此尝试再次读取它是没有意义的。
然而,在“流结束”实际上是由 Windows 上的 Ctrl-Z 等特殊字符引起的情况下,我们知道我们有可能再次读取cin
。但是,读取失败会导致eof
要设置的流上的标志。
要清除此标志(以及所有其他失败标志),您可以使用clear
method.
std::cin.clear();
调用此函数后,您可以尝试另一次读取。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)