1.创建一个文件流

ifstream in(ifile);//打开文件
ofstream out;//不打开文件

2. 文件输入输出类继承自iostream类,可以使用iostream类的操作

fstream特有操作
fstream fstrm;// 创立一个未绑定的文件流
fstream fstrm(s);//创立一个fstream,并打开名为s的文件
fstream fstrm(s,mode); //与前一个函数类似,但按指定mode打开文件
fstrm.open(s) //打开名为s的文件,并将文件与fstrm绑定
fstrm.close()//关闭与fstrm绑定的文件
fstrm.is_open()// 返回一个bool值,指出与fstrm关联的文件是否成功打开且尚未关闭

3. open 一个流对象打开一个文件

void open (const char *filename, openmode mode) ;
这里filename 是一个字符串,代表要打开的文件名,

mode 可以是标志符的组合:
ios::in 为输入(读)而打开文件,仅用做ifstream或fstream
ios::out 为输出(写)而打开文件,仅用做ofstream或fstream
ios::ate //打开就寻找末尾
ios::app 所有输出附加在文件末尾
ios::trunc 如果文件已存在则先删除该文件
ios::binary 二进制方式来操作文件

eg.

ofstream file ;
file.open ("example.bin", ios::out | ios::app | ios::binary) ;ofstream file("example.bin", ios::out | ios::app | ios::binary);<=>
ofstream file ;
file.open("example.bin",ios::out | ios::app | ios::binary) ;
  • 必须先关闭已经关联的文件,才可以打开新的文件。 当一个fstream对象被销毁时,close会自动被调用。
  • 默认情况下,即使不设置trunc,以out模式打开的文件也会被截断,文件原有的内容被清空。
  • 保留被ofstream打开的文件中已有数据的唯一方法是显式地指定app或者in模式。
  • 不能对输入流设置out模式,也不能对输出流设置in模式。

eg.

 void static process(ifstream& is){string s;while (is >> s)cout << s << endl;}void static ioFile(){ifstream input("sstream");   // create input and open the fileif (input) {          // if the file is ok, ``process'' this fileprocess(input);}elsecerr << "couldn't open: sstream" ;}

sstream内容为:
morgan 2015552368 8625550123
drew 9735550130
lee 6095550132 2015550175 8005550000

结果:

【引用】

  1. 代码 https://github.com/thefistlei/cplusprimer/blob/main/cprimer/cprimer/ioTest.h

C++ Primer 5th笔记(8)chapter8 类:IO库-文件流相关推荐

  1. C++ Primer 5th笔记(chap 17 标准库特殊设施)未格式化的输入/输出操作

    1. 格式化IO 输入和输出运算符(<< 和>>)根据读取或写入的数据类型来格式化它们. 输入运算符忽略空白符 输出应用补白 精度等规则操作 2. 未格式化 IO (unfor ...

  2. C++ Primer 5th笔记(chap 17 标准库特殊设施)多字节低层IO操作

    1. 多字节操作 一些未格式化 IO 操作一次处理大块数据,这些操作要求我们自己分配并管理用来保存和提取数据的字符数组 操作 解释 is.get(sink, size, delim) 从is中读取最多 ...

  3. C++ Primer 5th笔记(chap 17 标准库特殊设施)bernoulli_distribution 类

    1. 定义 一个普通类, 而非模板. 此分布总是返回一个 bool 值. 它返回 true 的概率是一个常数, 此概率的默认值是 0.5 string resp; default_random_eng ...

  4. C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式类和输入序列类型

    1. 多种类型的输入 可以搜索多种类型的输入序列. RE 库为这些不同的输入序列类型都定义了对应的类型,eg. 普通 char 数据.wchar_t 数据 字符可以保存在标准库string或是 cha ...

  5. C++ Primer 5th笔记(chap 17 标准库特殊设施)IO库 之操纵符

    1. 控制浮点数格式 可以控制浮点数输出三个种格式 • 以多高精度( 多少个数字) 打印浮点值 • 数值是打印为十六进制. 定点十进制还是科学记数法形式 • 对于没有小数部分的浮点值是否打印小数点 1 ...

  6. C++ Primer 5th笔记(chap 17 标准库特殊设施)bitset类型

    1. 提取 bitset 的值 函数返回一个值,保存了与bitset 对象相同的位模式. to_ulong() // 返回unsigned long to_ullong() //返回unsigned ...

  7. C++ Primer 5th笔记(chap 17 标准库特殊设施)随机数

    1. 场景: rand 生成随机数 此函数生成均匀分布的伪随机整数, 每个随机数的范围在 0 和一个系统相关的最大值( 至少为 32767) 之间. 1.1 问题: 一些应用需要随机浮点数. 一些程序 ...

  8. C++ Primer 5th笔记(chap 17 标准库特殊设施)匹配标志

    1. 用来控制匹配和格式的标志 标准库还定义了用来在替换过程中控制匹配或格式的标志,这些标志可以传递给函数 regex_search 或 regex_match 或是类 smatch 的 format ...

  9. C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式错误

    1. 指定或使用正则表达式时的错误 如果我们编写的正则表达式存在错误, 则在运行时标准库会抛出一个类型为regex 的异常 eg. try {// alnum右括号少了一个, 构造函数会抛出异常reg ...

最新文章

  1. linux spi双机通信,【转】STM32 SPI双机通信(主从全双工)
  2. 中国芯片将靠此超车!RISC-V架构神在哪全解构【附下载】
  3. intellij idea的TFS拉取项目文件不完全、文件误删恢复、TFS忽略文件解决方法
  4. 科大星云诗社动态20210328
  5. centos6.4下安装python3.6以及对应的django1.11
  6. mysql添加映射模块_iis7.5中让html与shtml一样支持include功能(添加模块映射)
  7. c++动态内存管理题目
  8. c mysql 编译_MySQL编译安装之cmake
  9. WPF使用Canvas绘制可变矩形
  10. 【转载】stackoverflow 上关于 rebar 的讨论
  11. SpringBoot注解@Component、Repository、Service、Controller的含义
  12. oracle11g arm,linux最全的需要oracle11g的rpm包
  13. Linux系统挂载新硬盘
  14. java 需要返回类型_在Java中,当一个方法不需要返回数据时返回类型必须是
  15. Effective java 第二章 对象 (2)
  16. 惠普136nw打印机清零_HP惠普打印机清零大全
  17. linux node安装菜鸟教程,手把手告诉你如何安装多个版本的node
  18. doc批量转成docx(doc batch convert docx)
  19. ubuntu 安装caj阅读器
  20. numpy学习:np.subtract.outer

热门文章

  1. 下列设备中 微型计算机系统必须具备的是,计算机应用基础题库
  2. html的li浮动之后往下移动,多个li浮动后居中显示问题
  3. 语法手册_是真的猛!SQL 语法速成手册
  4. 云计算数据中心建设热潮的两个图表
  5. 口令红包 java,[1.7.2]Gifts — 我的世界服务器在线礼物和登陆奖励插件
  6. Algorithm:C++语言实现之队列相关算法(最短路径条数问题、拓扑排序)
  7. ML:从0到1 机器学习算法思路实现全部过程最强攻略
  8. Py:利用pickle模块和API天气接口实现输入城市得到该城市的天气预报
  9. 代码审计_strcmp比较字符串
  10. 最小割板子题——[USACO5.4]奶牛的电信