Advertisement

C++ 管理输入输出异常(Python版本)

阅读量:

在处理输入输出时

复制代码
    	当我们输入时,可能会由于人的失误(错误理解了指令、打字错误等)、文件格式不符、错误估计了情况等原因造成读取失败。
    	
    	当我们输出时,如果输出设备不可用、队列满或者发生了故障等,都会导致写入失败。

可能存在无数种输入输出错误的情况!然而,在C++中将所有可能出现的情况归纳为四种特定的状态被称为流状态(stream state)。每一种流状态都通过一种iostate类型的标志位来表示其特征。

流状态对应的标志位

标志位 意义
badbit 发生了(或许是物理上的)致命性错误,流将不能继续使用。
eofbit 输入结束(文件流的物理结束或用户结束了控制台流输入,例如用户按下了 Ctrl+Z 或 Ctrl+D 组合键。
failbit I/O 操作失败,主要原因是非法数据(例如,试图读取数字时遇到字母)。流可以继续使用,但会设置 failbit 标志。
goodbit 一切止常,没有错误发生,也没有输入结束。

ios_base类包含定义了这四个标志位以及iostate类型。同时ios类继承自ios_base类。因此可以通过采用ios::failbit替代ios_base::failbit的方式来减少输入量。

当流出现错误时,标志位会被设置为相应状态;通过下表中列出的函

全部评论 (0)

还没有任何评论哟~