IO对象(流对象)不能拷贝和赋值,只能以引用的方式传递和返回

    // IO对象(流对象)不能拷贝和赋值,只能以引用的方式传递和返回ofstream out1, out2;out1 = out2; // 错误,不能对流对象赋值ofstream print(ofstream); // 错误,不能初始化流对象参数out2 = print(out2); // 错误,不能拷贝流对象

IO对象(流对象)状态

确定一个流对象的状态的最简单方法是将它当作一个条件来使用,我们将流当作条件使用的代码等价与 !fail()。注意,eof 和 bad 操作只能表示特定的错误,不过一旦被置位,则failbit同样会被置位(即失败状态),因此,使用good() / fail() 是确定流总体状态的正确方法。

    while(cin >> value) {...}

IO对象(流对象)置位(表示错误)与复位(清除)

void printState(istream& in) {// 流状态打印cout << "goodstate: " << in.good() << ", goodbit: " << in.goodbit << endl;cout << "failstate: " << in.fail() << ", failbit: " << in.failbit << endl;cout << "eofstate: " << in.eof() << ", eofbit: " << in.eofbit << endl;cout << "badstate: " << in.bad() << ", badbit: " << in.badbit << endl;cout << endl;
}
void baseIOStateTest(){    // IO对象(流对象)状态int value;while(cin >> value) {printState(cin);}auto old_state = cin.rdstate(); // 读取当前状态并记录printState(cin);cin.clear(); // 流状态复位,即错误位全部清除printState(cin);cin.setstate(old_state); // 设置为原来错误状态,导致failbit置位cin.clear(cin.rdstate() & ~cin.failbit); // 流状态复位,failbit复位printState(cin);cin.setstate(old_state); // 设置为原来错误状态,导致failbit置位cin.clear(cin.rdstate() & ~cin.failbit & ~cin.badbit); // 流状态复位,failbit和badbit复位printState(cin);cin.setstate(old_state); // 设置为原来错误状态,导致failbit置位printState(cin);int temp = 0;return;
}

结果截图

参考

C++ primer中文版 第五版 第8章

C++基础 - IO对象(流对象)状态,置位与复位相关推荐

  1. java基础----IO打印流PrintStream

    package com.henu.io;import java.io.PrintStream;/** •public PrintStream(String fileName): 使用指定的文件名创建一 ...

  2. java基础---IO字符流

    package com.henu.io;import java.io.FileNotFoundException; import java.io.FileReader;/** •FileReader( ...

  3. C++ Primer 5th笔记(8)chapter8 类:IO库-流的状态

    1. 定义:流有状态,表示是否出错. eg. 通常在使用它时要测试它的状态: while (cin >> word) 注:只有在非错误状态下,stream才能被读写 2. 流的状态值 st ...

  4. 对象流--对象的序列化

    1.对象是存在于内存中的(堆内存),有时候我们需要将对象保存在硬盘上,又有时我们需要将对象保存在另一台计算机上等等这样的操作, 这时候我们需要将对象转化为一个字节序列,而这个过程就是对象的序列化,相反 ...

  5. java基础---IO转换流

    package com.henu.io;import java.io.FileInputStream; import java.io.FileNotFoundException; import jav ...

  6. Java基础(三)IO流和对象流

    文件及IO流 File类 1.来自于java.io包 2.是文件和目录路径名的抽象表示 3.文件和目录可以通过File封装为对象 4.对于File而言,封装的不是真正存在的文件,仅仅是封装一个路径,路 ...

  7. 【java基础,IO合集】文件流、高级流(缓冲流、对象流)、 序列化接口java.io.Serrializable

    目录 文件流 1 块读写的文件复制操作 2 文件输出流-覆盖模式 3 文件输出流-追加模式 4 文件输出流-读取文本数据 高级流 1  流连接示意图 2 缓冲流 2.1 使用缓冲流完成文件复制操作 2 ...

  8. Java基础——IO流

    IO流基础知识内容: 1.java.io包下 File类:java程序中的此类的一个对象,就对应着硬盘中的一个文件或网络中的一个资源. File file1 = new File("d:\\ ...

  9. JAVA学习 API_day10(缓冲流, 打印流, 对象流)

    缓冲流, 转换流, 打印流, 对象流 1. 缓冲流 1. 字节缓冲流 2. 字符缓冲流 2.打印流 1.字节打印流(了解) 2.字符打印流 3.对象流 1. 缓冲流 1. 字节缓冲流 包装 -> ...

  10. Day13 对象流 自定义容器 Collection

    一 对象流 对象流  序列化 公共流(节点流)       ObjectInputStream         反序列化输入流  新增方法  readObject()       ObjectOutp ...

最新文章

  1. wireshrk中的名词说明
  2. python 不同模块之间的引用错误问题
  3. 自定义异常禁用异常堆栈_如何在Mac上禁用或自定义自动更正
  4. Xen的起源与工作原理
  5. Selenium入门11 滚动条控制(通过js)
  6. Protocol Buffer 序列化
  7. 软考信息安全工程师学习笔记三(1.3 信息安全管理基础)
  8. 三大运营商回应“提速降费”:认真落实各项要求
  9. 使用httpwatch抓包
  10. R语言机器学习:caret包使用及其黑箱模型解释(连续变量预测)
  11. SQL Server多表同时查询
  12. redis与mysql性能对比、redis缓存穿透、缓存雪崩
  13. python3多线程爬取京东投诉信息
  14. laravel mysql 时区_Laravel时区设置
  15. 如何进bios设置ssd固态硬盘为第一启动
  16. windows 查看/清除DNS解析记录
  17. 读硕士和读博士有什么区别?
  18. ⭐算法入门⭐《动态规划 - 串匹配》困难02 —— LeetCode 72. 编辑距离
  19. C语言编译出现一个警告,16种C语言编译警告(Warning)类型的解决方法
  20. [学习Qt:出现问题 1]程序异常结束。The process was ended forcefully.

热门文章

  1. python中英文混输对不齐_python中英文混合字符串对齐输出
  2. 英语学习——长难句02
  3. Unity3D项目加密-精锐5加密锁解决方案
  4. php://filter协议的另一个姿势
  5. 利用思维导图软件绘制鱼骨图怎样做
  6. left<=right or left<right
  7. Linux ARM平台开发系列讲解(网络篇) 2.1 Marvell 88EA6321/6320 Switch 数据手册阅读之了解芯片功能
  8. Echarts —自定义label标签的样式(formatter,rich,添加图标等操作)
  9. Python实现十进制转换为二进制(递归实现)
  10. 人工智能数学基础2:指数、方根及对数运算公式