【STL】iostream 编程:检测提取操作产生的错误


本文介绍检测提取操作产生的错误。


目录

  • [1 概述](#1 概述)
  • [2 说明](#2 说明)

1 概述

前文介绍过的输出流错误处理函数,同样适用于输入流 。在执行数据提取的过程中校验错误状态十分关键。

参考下面代码语句:

cpp 复制代码
cin >> n;

若变量 n 为有符号整型,当输入数值大于该类型的最大值(16位有符号 int 上限为 32767,也就是常量 MAX_INT)时,流的 fail 标志位会被置 1,cin 对象进入不可用状态。此后所有的提取操作都会直接结束运行,不会向变量存入任何数据。

2 说明

  1. 流锁死机制
    failbit 被置位后,输入流进入异常屏蔽状态,后续所有 >> 读取都会直接放行、不会执行实际读取逻辑。
  2. 恢复读取的必要两步
    cin.clear() 清除错误标记 + cin.ignore() 清空输入缓冲区里的非法数据。
  3. 32767 对应范围
    short(16位有符号整数)值域:-32768 ~ 32767,超出边界就会触发格式解析失败。
相关推荐
稚南城才子,乌衣巷风流1 小时前
判断素数与拓展应用
c++
众少成多积小致巨1 小时前
C++ 规范参考(下)
c++
c238561 小时前
把 C++ 内存分配拆透:new 与 malloc 的三层血缘
开发语言·c++·算法
txzrxz3 小时前
最短路问题——Dijkstra 算法
数据结构·c++·算法·最短路·优先队列
noipp3 小时前
推荐题目:洛谷 P6231 [JSOI2013] 公交系统
c语言·数据结构·c++·算法·游戏·洛谷·luogu
c238563 小时前
C/C++每日一练6
c语言·c++·算法
念恒123064 小时前
网络基础
linux·网络·c++
mct1234 小时前
c++ iconv 字符utf-8转换gb2312失败
开发语言·c++
ziguo11224 小时前
Windows API 文件操作超级指南——从入门到内核
c++·windows·visualstudio