-1

什么样的流可以导致功能永远运行?

这样的流存在吗?

4

3 回答 3

3

标准输入。

于 2010-08-30T11:00:47.170 回答
2

ifstream("/dev/random") ifstream("/dev/zero")

于 2010-08-30T11:21:21.263 回答
2

如果流遇到错误,它将停止返回/接受信息。如果您的函数正在等待从流中出来的东西,它将永远旋转。

使用if ( cin )(将流转换为bool)来测试错误情况。或者,cin.exceptions( ios::badbit )在程序或流初始化时调用,以便错误条件引发异常,而不是安静地旋转。

如果程序能够从此类错误中恢复,则调用cin.clear()(或任何流)后跟以删除有问题的输入。cin.ignore()

于 2010-08-30T11:33:38.977 回答