第八章 深入IO

第1节 序

第2节 IOStream概述

流式IO而非记录IO

处理的主要问题

  • 表示形式的变化:使用格式化/解析在数据的内部表示与字符序列之间切换
  • 与外部设备的通信:针对不同的外部设备引入不同的处理逻辑

涉及到的操作

  • 格式化/解析
  • 缓存
  • 编码转换
  • 传输

采用模板来封装字符特性,采用继承来封装设备特性

  • 常用类型实际上是类模板实例化的结果

第3节 输入和输出

分为格式化和非格式化两类

非格式化:不涉及数据表示形式的变化

  • 常用输入函数:get/read/getline/gcount
  • 常用输出函数:put/write

格式化:使用移位操作符进行的输入输出

第4节 文件与内存操作

文件操作

  • basic_ifstream/basic_ofstream/basic_fstream

    std::ofstream outfile("my_file");
    outfile << "Hello\n";
    
  • 文件流可以处于打开、关闭状态

    std::ofstream outfile;
    outfile.open("my_file");
    

    意义明确的打开方式组合

内存流:basic_istringstream/basic_ostringstream/basic_stringstream

也会受打开模式的影响:in/out/ate/app

使用.str()方法获取底层所对应的字符串

基于字符串流的字符串拼接优化操作(优于直接拼接string,避免内存的刷新)

第5节 流的定位、同步和状态

流的状态

iostate

  • badbit 不可恢复的流错误
  • failbit 输入输出操作失败(可恢复)
  • eofbit 关联的输出序列已达文件尾 (Ctrl+D/C)

检测流的状态

std::cout<<std::cin.good();

注意区分fail和eof

获取流的位置

  • tellg()/tellp() 用于获取输入/输出流的位置(pos_type类型)
  • 失败时返回(-1)

设置流的位置

  • seekg()/seekp()用于设置输入/输出流的位置

流的同步

C++基础:第八章 深入IO相关推荐

  1. 计算机应用基础实验指导实验八,计算机应用基础第八章上机实验

    计算机应用基础第八章上机实验 (28页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 第八章 上机实验n 实验一 键盘指法练习 n 实验二 ...

  2. c# 找出目录下的所有子目录_C# 基础知识系列- 14 IO篇 文件的操作(2)

    前接上一篇内容. 如果是第一次捧场的小伙伴,为了您阅读的连贯性,烦请扫一眼<C# 基础知识系列- 14 IO篇 文件的操作(1)>.本篇是IO之文件操作的第二篇,介绍一下目录和路径的相关类 ...

  3. java不死神兔总数_Java基础知识强化之IO流笔记13:递归之不死神兔问题(斐波那契数列)...

    1.这个问题是如下的: 有一对兔子,从出生后第3个月起,每个月都生一对兔子,小兔子长到第3个月又生一对兔子,加入兔子都不死,问第20个月兔子的对数? 分析:我们找规律 兔子对数 第1个月:   1 第 ...

  4. Socket基础八:网络IO模型的应用

    Socket基础八:网络IO模型的应用 作者:刘磊 2020.4.27 参考书目:<Windows网络编程>刘琰等著 一.实验目的 1)掌握WindowsI/O操作的基本原理. 2)掌握阻 ...

  5. Mysql数据库基础第八章:窗口函数和公用表表达式(CTE)

    Mysql数据库基础系列 软件下载地址 提取码:7v7u 数据下载地址 提取码:e6p9 mysql数据库基础第一章:(一)数据库基本概念 mysql数据库基础第一章:(二)mysql环境搭建 mys ...

  6. 计算机io接口主要功能,计算机基础知识2:IO接口及电源介绍.ppt

    <计算机基础知识2:IO接口及电源介绍.ppt>由会员分享,可在线阅读,更多相关<计算机基础知识2:IO接口及电源介绍.ppt(18页珍藏版)>请在人人文库网上搜索. 1.I/ ...

  7. Python基础知识点拾遗---文件IO(os、filecmp、shutil库)、sys库、序列化(pickle)、类

    Python基础知识点拾遗 文件IO 文本 目录 os 获取文件的创建.修改及最近访问时间 获取当前文件的大小 获取当前的登录用户名称 获取当前的cpu核数 调用操作系统底层的random生成器 sh ...

  8. 零基础学Python(第十八章 文件IO流操作)

    本套学习内容共计[22]个章节,每个章节都会有对应的从0-1的学习过程详细讲解,希望可以给更多的人提供帮助. 开发环境:[Win10] 开发工具:[Visual Studio 2019] 本章内容为: ...

  9. java中的常用的文件流_Java 基础(四)| IO 流之使用文件流的正确姿势

    image.png 一.什么是 IO 流? 想象一个场景:我们在电脑上编辑文件,可以保存到硬盘上,也可以拷贝到 U 盘中.那这个看似简单的过程,背后其实是数据的传输. 数据的传输,也就是数据的流动.既 ...

  10. 【嵌入式Linux】嵌入式Linux应用开发基础知识之文件IO

    文章目录 前言 1.文件从哪来 2.文件如何访问 2.1.通用IO模型open/read/write/lseek/close 2.1.1.通用IO模型使用示例 2.1.2.open/read/writ ...

最新文章

  1. RegisterStartupScript 和 RegisterClientScriptBlock 的区别
  2. 简单的 H5 视频推流解决方案
  3. 001帝国Cms二次开发之helloworld
  4. Spring IOC 容器源码分析系列文章导读
  5. CentOS 6.X 关闭不需要的 TTY 方法
  6. (原創) 如何讀取/寫入文字檔? (IC Design) (Verilog)
  7. 【干货】人人都能看懂的LSTM
  8. Android 获取当前的时间。年月日,时分秒,星期几
  9. LeetCode 338. 比特位计数(动态规划)
  10. bzoj 1662: [Usaco2006 Nov]Round Numbers 圆环数(枚举)
  11. matlab画三维图像(plot3,mesh,surf)
  12. property 理解
  13. Windows锁屏图片文件存放位置
  14. 挣脱“数据沼泽”,重获用云自由
  15. 从前后端分离到前后端整合的“退步”(一)项目结构
  16. Matlab之绘制三维曲面图
  17. 微信支付V3-SDK(已发布npm)
  18. 【重磅来袭】这绝对是全网最全的Springboot面试题
  19. Java的思考01 - 当大老板还是小老板
  20. 用exclusion切断maven jar包的依赖传递

热门文章

  1. 【bzoj4940】这是我自己的发明
  2. Android开发教程 - 使用Data Binding Android Studio不能正常生成相关类/方法的解决办法...
  3. Dirichlet分布深入理解
  4. python3 print
  5. iOS:在OC中调用JS脚本
  6. DELPHI学习---简单类型
  7. MatchSum - 一种基于语义匹配的抽取式摘要框架
  8. 【AAAI2021】自动跨主题作文属性评分
  9. 她不讲武德,北航博士竟然把60年来的文本分类综述都整理了!!!
  10. 【CV学习笔记】色彩空间