【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,超出边界就会触发格式解析失败。
相关推荐
Rabitebla11 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
西西弗Sisyphus13 小时前
C++ 超时互斥锁(Timed Mutex):std::timed_mutex 与 std::unique_lock
c++
今天要早睡_15 小时前
C++01_入门基础复习
开发语言·c++
Fuyo_111918 小时前
C++ 运行时多态与虚函数机制全面剖析【面试重点】
开发语言·c++·面试
Chen_harmony19 小时前
七、STL与string类
开发语言·c++
xxxiugou12320 小时前
C++命名空间与引用全解析
开发语言·c++
用户76241175670521 小时前
第十五章 人工智能基础
c++
爱写Bug的浮游1 天前
unique_ptr 零开销的真相与边界
c++·facebook
xiaoye-duck1 天前
《C++ 项目:手写大模型接入 SDK》ChatGPT接口设计(下):流式响应实现和测试
网络·c++·语言模型·chatgpt
落樱弥城1 天前
Perf 逐步探查性能缺口并优化
c++·性能优化