本文介绍检测提取操作产生的错误。
目录
- [1 概述](#1 概述)
- [2 说明](#2 说明)
1 概述
前文介绍过的输出流错误处理函数,同样适用于输入流 。在执行数据提取的过程中校验错误状态十分关键。
参考下面代码语句:
cppcin >> n;若变量 n 为有符号整型,当输入数值大于该类型的最大值(16位有符号 int 上限为 32767,也就是常量 MAX_INT)时,流的 fail 标志位会被置 1,cin 对象进入不可用状态。此后所有的提取操作都会直接结束运行,不会向变量存入任何数据。
2 说明
- 流锁死机制
failbit 被置位后,输入流进入异常屏蔽状态,后续所有 >> 读取都会直接放行、不会执行实际读取逻辑。- 恢复读取的必要两步
cin.clear() 清除错误标记 + cin.ignore() 清空输入缓冲区里的非法数据。- 32767 对应范围
short(16位有符号整数)值域:-32768 ~ 32767,超出边界就会触发格式解析失败。